带括号的公式分析器

时间:2010-07-05 14:24:41

标签: algorithm parsing formula

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

提前致谢,
弗兰克

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

也许这篇文章可以提供帮助吗?

http://www.go4expert.com/forums/showthread.php?t=1693

/ Fridden

答案 2 :(得分:0)

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

语法看起来像这样:

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

(你必须根据你的需要定义为整数,浮点值,分数等)

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