本文是针对 设计篇之优先级表设计 一文写的,主要阐述优先级表设计的另外一种思路,当然这种思路可能是不正确的。
在这种设计中,优先级被划分为7个级别:P0,P1,P2,P3,P4,P5,P6,P7,P0优先级最低,P7最高。
在这种设计中,优先级被划分为7个级别:P0,P1,P2,P3,P4,P5,P6,P7,P0优先级最低,P7最高。
优先级 | 运算符 |
P0 | # ( |
P1 | + - |
P2 | * / % |
P3 | 保留 |
P4 | sin,cos,tg,ctg,asin,acos,atg,actg |
P5 | lg,log,ln |
P6 | pow |
P7 | 保留 |
我们规定:
1. 如果运算符栈顶的运算符优先级高于或等于当前读入的运算符优先级,则弹出栈顶运算符,同时从数栈弹出相应数量的操作数进行运算,将运算结果压入数栈,最后把当前运算符压入运算符栈。
2. 如果运算符栈顶的运算符优先级低于当前读入的运算符的优先级,则直接压入当前运算符到运算符栈。
3. 如果当前运算符为' ) ',则弹出运算符栈中的运算符进行相应的运算,直到弹出的运算符是' ( ' 为止。
4. 如果当前运算符为' ( ',则直接把' ( '压入运算符栈
要