我正在试图弄清楚在实施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
提前致谢。
/布赖恩
答案 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