2008-11-13 25 views
-1

Comment les priorités infixes et la pile soit étendue pour inclure les opérateurs <, >, <=, >=, ==, !=, !, && et ||?Comment étendre les priorités d'infixe et de pile à des opérateurs supplémentaires?

Lors de l'analyse d'une expression infixe, par exemple: P + (Q – F)/Y#, chaque symbole a une priorité en rapport avec son ordre de fonctionnement. / et * ont une priorité plus élevée que + et -.

Voici les priorités que j'ai/COMPRENDRE:

Priority */+ - () # 

Infix 2 2 1 1 3 0 0 

Stack 2 2 1 1 0 n/a 0 
+0

Cela ressemble à une question de devoirs cité mot pour mot ... –

+0

Est-ce pas dépendent du langage de programmation en cours d'utilisation? Je veux dire que tout cela n'est qu'une convention, n'est-ce pas? – Trilarion

Répondre

1

Cela dépend de ce que les priorités que vous voulez, non? Sauf si vous posez des questions sur les priorités dans une langue spécifique (si c'est le cas, élaborer).

Quoi qu'il en soit, <,>, < = et> = ne sont pas applicables à booléens, == et! = Appliquer à quoi que ce soit, et!, & & et || s'applique uniquement aux booléens. Mais ils retournent TOUS les booléens, donc vous voulez appliquer ceux qui ne s'appliquent pas aux booléens d'abord, ceux qui pourraient s'appliquer aux booléens suivants, et enfin ceux qui ne s'appliquent qu'aux booléens. Comme pour le dernier,! a priorité sur & & et ||. Bien que cela ne soit pas nécessaire, je ferais & & avoir la priorité sur ||, car certaines notations logiques fonctionnent de cette façon.

Ainsi, la priorité finirais être:

(
*/
+ - 
< > <= >= 
== != 
! 
&& 
|| 
) # 
+0

Je pense qu'il est un peu trompeur de mettre le ')' en bas –