通常,计算中缀数学表达式的程序使用 Shunting Yard Algorithm 的某种变形来先将表达式转换为 Reverse Polish Notation,然后再计算 Reverse Polish Notation 得出单个最终值。
我的问题是,是否有一些著名算法可以跳过 INFIX -> RPN 步骤,直接使用某种递归下降解析方法在原地计算初始的中缀表达式?
想必,在编写编译器或解析器以将 INFIX 转换为 RPN 时,这可能非常有用。RPN 是表达式(AST)的"编译形式",可以通过简单的输出堆栈更轻松地由计算机进行评估。但如果您只是编写立即将中缀表达式转换为数字输出值的代码,则可能没有任何用处缓存中间RPN格式。
因此,是否有任何著名的算法用于分析中缀表达式,而不是首先转换为 RPN?还是将其转换为 RPN 通常比其他方法更有效?
我的问题是,是否有一些著名算法可以跳过 INFIX -> RPN 步骤,直接使用某种递归下降解析方法在原地计算初始的中缀表达式?
想必,在编写编译器或解析器以将 INFIX 转换为 RPN 时,这可能非常有用。RPN 是表达式(AST)的"编译形式",可以通过简单的输出堆栈更轻松地由计算机进行评估。但如果您只是编写立即将中缀表达式转换为数字输出值的代码,则可能没有任何用处缓存中间RPN格式。
因此,是否有任何著名的算法用于分析中缀表达式,而不是首先转换为 RPN?还是将其转换为 RPN 通常比其他方法更有效?