四则运算表达式解析

2015-07-22  本文已影响520人  纵横而乐

四则运算比如:a + b*c +( d - e)

编译器的做法一般是将其解析成逆波兰式之后再进行运算

解析过程如下:

依次取经过四则运算之后的 四则运算表达式 中的各个元素x

分析规则:(需要使用到 存在逆波兰式结果的栈 结果栈和临时存放运算符的栈 运算符栈)

1 如果x为操作数则直接压入结果栈

2 如果x为操作符则分析规则如下:

   a 如果x为"(", 则直接将其压入运算符栈

   b 如果x为")",则将距离其最近的运算符依次压入结果栈中,并将"("丢弃

   c 如果x不为"("或者")":

      如果运算符栈为空,则直接将x入运算符栈

      如果运算符栈非空,若x比运算符栈顶运算符的优先级高,则将x入栈,否则将运算符栈中优先级高于x的运算符依次出栈直到遇到优先级小于x的运算符

3 如果到达表达式的末尾,则将运算符栈中的所有运算符依次压入结果栈中

上一篇下一篇

猜你喜欢

热点阅读