3.2.4 表达式求值问题 任何一个表达式都是由操作数(operand)、运算符(operator)和界限符(delimiter)组成,其中,操作数可以是常数也可以是被说明为变量或常量的标识符;运算符可以分为算术运算符、关系运算符和逻辑运算符等三类;基本界限符有左右括弧和表达式结束符等。为了叙述简洁,在此仅限于讨论只含二元运算符的算术表达式。可将这种表达式定义为: 表达式::= 操作数 运算符 操作数 操作数::= 简单变量 | 表达式 简单变量::= 标识符 | 无符号整数 由于算术运算的规则是:先乘除后加减、先左后右和先括弧内后括弧外,则对表达式进行运算不能按其中运算符出现的先后次序进行。那么怎么办?其中一个方法是先将它转换成另一种形式。 |
|
|||||||||
在计算机中,对这种二元表达式可以有三种不同的标识方法。 假设 Exp = S1 + OP + S2 则称 OP + S1 + S2 为表达式的前缀表示法(简称前缀式) 称 S1 + OP + S2 为表达式的中缀表示法(简称中缀式) 称 S1 + S2 + OP 为表达式的后缀表示法(简称后缀式) 可见,它以运算符所在不同位置命名的。 |
正文中对表达式的定义可解释为: 二元表达式是由(第一)操作数(S1)、运算符(OP)和(第二)操作数(S2)三部分依次联接而成;其中的操作数可以是简单变量,也可以是表达式;而简单变量可以是标识符,也可以是无符号整数。 |