2016-11-22 20 views
0

Я пытаюсь выяснить, каков приоритет для разных операторов при реализации алгоритма шаттлов.Шунтирующий двор (обратная польская обозначение/постфикс) приоритет оператора

Мое абстрактное синтаксическое дерево находится в инфиксном режиме, и я оцениваю его с помощью алгоритма shuting yard. Это справедливо для арифметических операторов. Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, какое преимущество имеют все остальные операторы.

От 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 

Спасибо заранее.

/Brian

ответ

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