[英]Evaluating Logical expression in string format with operators as predefined variables in Embedded C++
(Operand 1) (Operator) (Operator 2)
示例:
Var_A AND Var_B
我想用interpreter来解决这个问题,但是我对interpreter不太熟悉,只是听说这种情况下可以使用interpreter。
请提出相同的逻辑解决方案。
您的解决方案将是编写一个扫描器和解析器来构建一棵树。
获得想法的最佳解决方案是使用Flex和Yacc进行一些测试。 这些工具允许您进行扫描 (Flex) 并将扫描的字符串转换为解析器 (Yacc) 可以使用上下文无关语法 (CFG) 将其转换为对方程进行编码的节点树。 (这与编译器的完成方式非常相似)
如果您的输入是这样的,这允许您执行以下操作:
var1 + var2
您扫描此字符串以查找令牌,它们是: var1<variable> +<operator> var2<variable>
您将这些标记转换为树的节点:
node #1
op: +
operatorType: enumvalue for +
| |
| |
| |
\/ \/
node #2 node# #3
name: var1 name: var2
type: var type: var
您现在可以遍历树并使用树中对象的成员来确定它是什么以及如何使用它。
现在棘手的部分是你将如何在受限的嵌入式设备中实现它。 如果您的设备有足够的 RAM 来包含足够大的用于此树结构的数据缓冲区,则可以做到这一点。 我的解决方案是为我的树 object 节点分配一个缓冲区,并为变量名称分配一个缓冲区,这将允许在没有碎片的情况下使用 static 数量的 memory。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.