概述
本文所讨论的表达式指的是数学表达式。在数学表达式中,最常见的结构是由一组二元运算符和运算对象构成,通常,二元运算符写在运算对象中间,这样的形式成为中缀表达式。将运算符写在运算对象前面称为前缀表达式,将运算符写在运算对象的后面称为后缀表达式。
本文对表达式的讨论是假设运算符为二元运算符。
中缀表达式
中缀表达式是日常最习惯的一种表达式,但是作为表达式的表示方式,它很难统一的贯彻,对于一元和多元运算符难以用中缀表达式表示。
在运算符的元数唯一且确定的前提下,描述表达式的最重要的问题是准确描述表达式的顺序,而中缀表达式不足以表示所有的可能的运算顺序,它需要借助其他的辅助措施,比如辅助符号、约定的优先级等。
前缀表达式
前缀表达式,也成为波兰表达式,是由波兰数学家 J. Lukasiewicz 于1929年提出的,它将所有的运算符都写在他们的运算对象前面。每个运算符的运算对象,就是它后面出现的几个完整表达式,表达式个数由运算符的元数确定。这样的规定完全不需要引入括号,它已自然地描述了计算顺序。
后缀表达式
后缀表达式,也被称为逆波兰表达式,它与前缀表达式类似,只不过运算符和运算对象的位置相反。其中所有运算符都写在它们的运算对象之后。每个运算符的运算对象,就是它前面出现的几个完整表达式,个数也是由元素安抚的元数确定的,同样它也自然的描述了复杂表达式的计算顺序而不需要引入其他辅助机制。
后缀表达式特别适合计算机处理。
举个栗子
一下三种表达形式描述的是同一个计算过程