2016-11-22 65 views
0

我试图找出当实现shuting代码算法时,不同运算符的优先级是什么。调车场(反向波兰表示法/后缀)运算符优先级

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

https://en.wikipedia.org/wiki/Shunting-yard_algorithm我可以看到,这些操作符的以下情况属实。数字是优先。

^ 4 
* 3 
/ 3 
+ 2 
− 2 

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

有人能给我precedense的全貌所有这些运营商:

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

在此先感谢。

/布赖恩

回答

0

看一看Mathematica的Operator Input Forms其示出了操作员输入的形式,按优先级递减的顺序。同等优先级的运营商被组合在一起。

您可以确定 “优先级” 像这样在数学:

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