Je comprends comment convertir Infix en Postfix/Prefix, mais je ne comprends pas pourquoi l'expression postfix ou préfixe est utilisée dans le système informatique?
Quel est l'avantage du préfixe postfix sur l'expression de l'infixe?
Les deux pré et postfix ont essentiellement les mêmes avantages sur la notation d'infixe. Le plus important d'entre eux sont:
beaucoup plus facile de traduire en format adapté à une exécution directe. Soit format peut trivialement être transformé en arborescence pour un traitement ultérieur, et Postfix peut être traduit directement en code si vous utilisez un processeur à base de pile ou une machine virtuelle
entièrement sans ambiguïté. La notation d'infixe nécessite des règles de priorité et d'association pour le désambiguoir, ou d'ajouter des parenthèses supplémentaires qui ne sont généralement pas considérées comme faisant partie de la notation. Tant que le nombre d'arguments à chaque opérateur est connu à l'avance, la notation de préfixes et de postfix est tout à fait sans ambiguïté: "* + 5 6 3" est (5 + 6) * 3 et ne peut pas être interprété comme 5+ (6 * 3), tandis que la parenthèse est tenue de réaliser avec l'infixe.
prend en charge les opérateurs avec différents nombres d'arguments sans variation de la syntaxe. "Unary-op 5" et "Ternary-Op 1 2 3" Les deux fonctionnent bien, mais ont besoin de syntaxe spéciale pour les faire travailler en infixin.
Notez que [~ # ~ # ~] lisp [~ # ~ ~] Langues (par exemple LISP commun , schéma , Clojure et de nombreuses dialectes spécifiques inspirées par eux comme Autolisp , emacs-lisp , FOND , etc. .) Toutes utilisent une syntaxe préfixe: chaque expression commence par une parenthèse gauche, puis l'opérateur, puis les opérandes, puis la parenthèse droite. Ces expressions sont appelées S-Expressions . Par exemple, 1 + 2 * 3 est typé comme (+ 1 (* 2 3))
Et il n'y a pas besoin de préséance de l'opérateur .
Les avantages d'une telle syntaxe simple (probablement le plus simple possible pour [~ # ~ # ~] ast [~ # ~] S, à l'extérieur de la pile Langues à la FIRT) incluent:
L'inconvénient de cette syntaxe est un jeu de mots sur la langue: beaucoup d'entretoises stupides insipides . Toutefois (croyez-le ou non) tout codeur LISP ne voit pas la parenthèse comme agressif et utilise la capacité (fournie par tout bon éditeur) pour correspondre à la parenthèse lors de la lecture du code à l'écran.
BTW, ce qui est important, c'est de ne pas convertir la représentation textuelle d'E.G. Infix au préfixe, mais à parse expressions dans AST (arbres de syntaxe abstraites). Très souvent, un AST est un arbre - comme une structure en mémoire, en gardant plus d'informations sur la forme syntaxique simple (par exemple, l'emplacement de la source, en tant que nom de fichier, ligne Nombre, numéro de colonne ou quelques informations de type, etc.).