为什么我们需要前缀、后缀表示法



我知道它们是如何相互转换的,但从来没有真正理解它们的应用是什么。通常的中缀操作是相当可读的,但是它在哪里失败了,导致了前缀和后缀符号

的开始

中缀表示法对于人来说很容易阅读,而前缀/后缀表示法对于机器来说更容易解析。前缀/后缀表示法的最大优点是永远不会出现运算符优先级之类的问题。

以中缀表达式1 # 2 $ 3为例。现在,我们不知道这些运算符是什么意思,所以有两个可能对应的后缀表达式:1 2 # 3 $1 2 3 $ #。如果不知道这些操作符的使用规则,中缀表达式基本上是没有价值的。

或者,用更一般的术语来说:可以在不需要任何额外知识的情况下从前置/后置表达式恢复原始(解析)树,但对于中缀表达式则不是这样。

后缀表示法,也称为RPN,非常容易从左到右进行处理。操作数被压入堆栈;操作符从堆栈中弹出其操作数并压入结果。很少或根本不需要解析。它被Forth和一些计算器(HP计算器以使用RPN而闻名)所使用。

前缀表示法几乎同样容易处理;

至少对于前缀表示法来说:使用前缀操作符的好处是,从语法上看,操作符读起来就好像是一个函数调用

前缀/后缀与中接符的另一个方面是操作符的实参数(应用于多少个实参)不再被限制为恰好为2。它可以更大,有时也可以更小(当默认值自然隐含时为0或1,例如加法/减法为0,乘法/除法为1)。

最新更新