2016-11-22 2 views
0

J'essaie de déterminer quelle est la préséance pour les différents opérateurs lors de la mise en œuvre de l'algorithme de la cour de triage.Courbe de manœuvre (Reverse Polish Notation/Postfix) opérateur priorité

Mon arbre de syntaxe abstraite est en infixe et j'évalue en utilisant l'algorithme de la cour de triage. Cela fonctionne très bien pour les opérateurs arithmétiques. Le problème auquel je suis confronté est que je ne connais pas la priorité de tous les autres opérateurs.

De https://en.wikipedia.org/wiki/Shunting-yard_algorithm Je peux voir que ce qui suit est vrai pour ces opérateurs. Le nombre est la précédence.

^ 4 
* 3 
/ 3 
+ 2 
− 2 

Mais je n'arrive pas à trouver quoi que ce soit qui décrive la précédence pour les opérateurs relationnels et logiques? J'ai cherché beaucoup pour une réponse.

quelqu'un peut me donner l'image complète de la precedense pour tous ces opérateurs:

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

Merci à l'avance.

/Brian

Répondre

0

Jetez un oeil à l'Mathematica Operator Input Forms qui montre les formes d'entrée de l'opérateur, dans l'ordre décroissant de priorité. Les opérateurs de priorité égale sont regroupés.

Vous pouvez déterminer la "priorité" comme celui-ci dans 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