后缀超过前缀表示法的好处

时间:2016-07-02 16:19:47

标签: algorithm compiler-construction

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

但是,我不明白为什么我们必须将所有内容转换为postfix而不是前缀表示法呢?函数已经在前缀中了,所以不应该将非函数实体转换为前缀表示法并反向执行吗?

1 个答案:

答案 0 :(得分:3)

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

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