算符优先算法
由运算符优先级确定运算顺序的对表达式求值算法
表达式组成
- 操作数:常量,变量
- 运算符:算术运算符,关系运算符和逻辑运算符
- 界限符:左右括号“( )”和表达式结束符“#”
例如:# 3 *( 7 - 2 )#
为了实现表达式求值。需要设置两个栈
- 算符栈OPTR,用于存运算符
- 操作数栈OPND,用于寄存运算数和运算结果(数据)
求值的处理过程是自左到右扫描表达式的每一个字符
- 当扫描到的是运算数,则将其入栈OPND
- 当扫描到运算符时
- 若运算符比OPTR栈顶运算符优先级高,入栈OPTR,继续向后处理
- 若运算符比OPTR栈顶运算符优先级低,则从OPND栈中出栈两个运算数,从OPTR出栈两个栈顶运算符运算,将运算结果入栈OPND
- 继续处理字符,直到遇到结束符#