【问题标题】:Formula Parser with Brackets带括号的公式解析器
【发布时间】:2010-07-05 14:24:41
【问题描述】:

我需要实现一个简单的公式解析器。我正在做的是首先创建一个postfix notation 然后evaluating the postfix string。不幸的是,该算法不允许使用括号,即 (2+3)*a。任何人都知道如何扩展算法以允许括号?

提前致谢,
弗兰克

【问题讨论】:

    标签: algorithm parsing formula


    【解决方案1】:

    后缀表示法的重点是消除中缀表示法中的括号,以便您可以更轻松地评估表达式。如果您当前的算法不允许在中缀表达式中使用括号,那么您使用的是错误的算法。

    shunting yard algorithm 将允许您从中缀转换为后缀,即使中缀版本有括号。

    【讨论】:

    • 嗨弗拉德,我发现我使用的算法是一个“精简”的调车场。借助维基百科的信息,我能够正确调整它。非常感谢!
    【解决方案2】:

    作为替代方案,算术表达式的语法非常简单,您可以轻松实现递归下降解析器,为您计算表达式。

    语法看起来像这样:

    <expression> ::= <term> <add_sub> <expression>
    <term> ::= <factor> <mul_div> <term>
    <factor> ::= '(' <expression> ')' | <number>
    <add_sub> ::= '+' | '-'
    <mul_div> ::= '*' | '/'
    

    (您必须根据需要定义为整数、浮点值、分数等)

    上面的语法处理了括号和运算符的优先级

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 2016-12-09
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多