分流码(反向波兰表示法/后缀)运算符优先级

时间:2016-11-22 08:37:33

标签: operators evaluation operator-precedence postfix shunting-yard

我正在试图弄清楚在实施shuting码算法时不同运营商的优先级。

我的抽象语法树是中缀,我正在使用shuting yard算法进行评估。这适用于算术运算符。我面临的问题是我不知道其他所有运营商的优先级。

https://en.wikipedia.org/wiki/Shunting-yard_algorithm我可以看到以下情况适用于这些运营商。数字是优先权。

^   4   
*   3 
/   3
+   2
−   2

但我似乎无法找到任何描述关系和逻辑运算符的先行者的东西?我已经搜索了很多答案。

有人可以给我所有这些运算符的完整图片:

a. Function call
b. (
c. ,
d. +, -
e. *, /
f. ^
g. =, <>, <, <=, >, >=
h. NOT
i. AND
j. OR

提前致谢。

/布赖恩

1 个答案:

答案 0 :(得分:0)

看一下Mathematica Operator Input Forms,它按优先级递减的顺序显示操作员输入表格。具有相同优先权的运算符组合在一起。

您可以在Mathematica中确定“优先级”:

Precedence[Power] gives 590
Precedence[Times] gives 400
Precedence[Plus] gives 310
Precedence[Equal] gives 290
Precedence[Not] gives 230
Precedence[And] gives 215
Precedence[Or] gives 215