后缀相对于前缀表示法的好处

Benefit of postfix over prefix notation

我的编译器设计教授说,在评估语句时,我们将每个标记转换为后缀表示法。除函数调用以外的所有内容都采用中缀表示法,因此必须转换为 postfix.However 函数采用前缀而不是中缀表示法。所以他们也必须转换。 这可以证明为中缀中的 a+b 等同于前缀表示法中的 +(a,b)+ab

但是,我不明白为什么我们必须将所有内容都转换为后缀而不是前缀表示法?函数已经在前缀中,那么将非函数实体转换为前缀符号并反向执行不是更快吗?

您的讲师描述的方法是一种可能的表达式解析方法,但它不是唯一的方法。从根本上说,解析的目标是将表达式转换为易于使用和解释的格式,前缀和后缀表示法都满足这些要求。在实际的编译器中,更常见的是构建抽象语法树,一棵对输入结构进行编码的树,您可以将前缀和后缀符号视为该树的前序或后序遍历。

至于效率 - 使用前缀和后缀表示法之间的实际成本差异微不足道,不会成为编译器的瓶颈。通常,编译器最耗时的阶段是优化,而解析只消耗很少的时间。在您有具体证据表明它导致问题之前,我不会担心解析的效率。