通常,评估中缀数学表达式的程序使用Shutting Yard 算法的一些变体,首先将表达式转换为逆波兰表示法,然后评估逆波兰表示法以获得单个最终值。
我的问题是,是否有一些众所周知的算法绕过 INFIX -> RPN 步骤,并使用某种递归下降解析来评估初始中缀表达式?
据推测,在编写编译器或解析器来翻译 INFIX -> RPN 时它可能很有用。RPN 是一种表达式(AST)的“编译形式”,可以更容易地由计算机使用简单的输出堆栈进行评估。但是,如果您只是简单地编写将中缀表达式立即转换为数字输出值的代码,那么缓存中间 RPN 表单可能没有任何用处。
那么,是否有任何众所周知的算法来解析中缀表达式而不首先转换为 RPN?还是转换为 RPN 通常比任何其他方法更有效?