Приоритет оператора маневрового двора (обратная польская запись / постфикс)

Я пытаюсь выяснить, каков приоритет для разных операторов при реализации алгоритма закрывания.

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

Из 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 ответ

Взгляните на формы ввода операторов Mathematica, в которых показаны формы ввода операторов в порядке убывания приоритета. Операторы одинакового приоритета сгруппированы вместе.

Вы можете определить "приоритет" как это в 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
Другие вопросы по тегам