Algorithm 带括号的公式解析器

Algorithm 带括号的公式解析器,algorithm,parsing,formula,Algorithm,Parsing,Formula,我需要实现一个简单的公式解析器。我所做的是先创建一个。不幸的是,该算法不允许括号,即(2+3)*a。有人知道如何扩展算法以允许括号吗 提前感谢, Frank后缀表示法的全部目的是消除中缀表示法中的括号,以便更轻松地计算表达式。如果您当前的算法不允许中缀表达式中使用括号,那么您使用的是错误的算法 将允许您从中缀转换为后缀,即使中缀版本有括号。作为替代方案,算术表达式的语法非常简单,您可以轻松实现一个递归下降解析器,为您计算表达式 语法如下所示: <expression> ::= <

我需要实现一个简单的公式解析器。我所做的是先创建一个。不幸的是,该算法不允许括号,即(2+3)*a。有人知道如何扩展算法以允许括号吗

提前感谢,

Frank

后缀表示法的全部目的是消除中缀表示法中的括号,以便更轻松地计算表达式。如果您当前的算法不允许中缀表达式中使用括号,那么您使用的是错误的算法


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

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

语法如下所示:

<expression> ::= <term> <add_sub> <expression>
<term> ::= <factor> <mul_div> <term>
<factor> ::= '(' <expression> ')' | <number>
<add_sub> ::= '+' | '-'
<mul_div> ::= '*' | '/'
:=
::=   
::= '('  ')' | 
::= '+' | '-'
::= '*' | '/'
(您必须根据需要定义为整数、浮点值、分数等)


上面的语法考虑了括号和运算符优先级

Hi-Vlad,我发现我使用的算法是一个“精简”的调车场。有了维基百科上的信息,我能够适当地修改它。非常感谢!