【问题标题】:c expression evaluator take 2c表达式求值器取2
【发布时间】:2023-04-10 23:31:01
【问题描述】:

参考接受的解决方案:SO:expression_evaluator

谁能提供一个也适用于否定的版本?像

((!(0 or !1) and !((0 or 1 or 1) and !1))

也需要工作。

我让它工作,所以否定 0 或 1 很好,但我不能让它与整个组的否定一起工作(!在括号开头)

从 *expr == '(' 块中的 eval 返回后,我尝试否定 tmp。如果在调用它之前已经看到了 !,但这不起作用。

【问题讨论】:

标签: c expression


【解决方案1】:

该答案中的代码有点特别。解析是一个很好理解的领域,不需要发明。那里的其他答案之一建议研究递归下降解析。我赞同这个建议。

【讨论】:

  • +1 - 没什么好说的了,除了应该构建一个类似于 AST 的东西,然后可以很容易地计算出来。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    相关资源
    最近更新 更多