c表达式评估者取2

时间:2009-10-28 23:13:27

标签: c expression

参考:SO:expression_evaluator

中的公认解决方案

任何人都可以提供一个与否定一起使用的版本吗?

之类的东西
((!(0 or !1) and !((0 or 1 or 1) and !1))

也需要工作。

我得到了它的工作,所以否定0或1是好的,但我不能让它与整个群体的否定一起工作(!在括号开头)

我在* expr =='中从eval返回后尝试否定tmp('阻止..如果在调用它之前已经看过了,但是那不起作用。

2 个答案:

答案 0 :(得分:6)

该答案中的代码有点特别。解析是一个众所周知的领域,不需要发明。其中一个答案建议考虑递归下降解析。我是第二个推荐。

答案 1 :(得分:0)

描述的算法here可以处理一元运算符(具有一个操作数的运算符)以及函数。

我曾经将它用作完整的C表达式求值程序的基础,它支持嵌入式系统上命令行控制台的符号变量。我没有使用随附的示例代码,而是从头开始编写它以符合我的目的。