Exercice suivant

Arbre syntaxique et chaîne

Question posée à l'écrit du 5 mars 1997

Soit un arbre syntaxique contenant une expression arithmétique, basé sur les déclarations suivantes:

type Contenus = (Operande, Operateur);
     Operations=(Addition, Soustraction, Multiplication, Division);
     VersNoeud = ^Noeud;
     Noeud = record case Contenu: Contenus of
                      Operande: (Valeur: integer);
                      Operateur:(Operation: Operations;
                                 Gauche,Droite: VersNoeud);
                    end; (* Noeud *)
Ecrivez une procédure qui convertira un tel arbre syntaxique en une chaîne contenant la même expression arithmétique en notation polonaise postfixée. Vous utiliserez à cet effet les déclarations suivantes:
type VersMaillon = ^Maillon;
     Maillon = record
                 Suivant: VersMaillon;
                 case Contenu: Contenus of
                      Operande: (Valeur: integer);
                      Operateur:(Operation: Operations);
                 end; (* Maillon *)
Pour rappel, la notation polonaise postfixée consiste à noter une expression arithmétique avec l'opérateur à la suite des opérandes sur lesquels il porte. Cette notation ne nécessite donc pas de parenthèses. Par exemple, l'expression (85 - 9) * ((78 + 45) / (6 - 2)) est notée, en notation polonaise postfixée, de la façon suivante: 85 9 - 78 45 + 6 2 - / *. Pour vous aider, sachez que cette conversion correspond à une des méthodes classiques de parcours d'arbre.

Solution

Exercice suivant

Site Hosting: Bronco