Compilateurs

Quelle caractéristique de l'arbre syntaxique abstrait (AST) est correcte ?

  1. AIl conserve comme nœuds tous les éléments du code source, jusqu'aux parenthèses et séparateurs
  2. BIl omet les symboles sans incidence sur la sémantique et exprime la priorité des opérateurs par la forme de l'arbre
  3. CIl correspond un à un aux instructions du CPU et s'exécute tel quel
Afficher la réponse et l'explication

Réponse : B. Il omet les symboles sans incidence sur la sémantique et exprime la priorité des opérateurs par la forme de l'arbre

L'analyse syntaxique produit, conformément aux règles de grammaire, un arbre incluant parenthèses et séparateurs (arbre syntaxique concret), qui contient beaucoup d'informations inutiles pour la suite. L'arbre syntaxique abstrait ne garde comme nœuds que les opérations et instructions nécessaires à la sémantique du programme ; pour (a + b) * c, par exemple, le nœud d'addition placé sous le nœud de multiplication indique l'ordre de calcul sans parenthèses. La correspondance avec les instructions du CPU relève du code généré dans une phase ultérieure.

S'entraîner sur ce thème Retour au thème

Autres questions sur Compilateurs

  1. Quel est le principal avantage d'utiliser, à l'intérieur d'un compilateur, une représentation intermédiaire (IR) indépendante du langage source comme du CPU ?
  2. Quelle définition du bloc de base est correcte ?
  3. Dans un graphe de flot de contrôle, quelle combinaison de ce que représentent nœuds et flèches est correcte ?
  4. Quelle caractéristique d'une représentation intermédiaire en forme SSA est correcte ?
  5. Mis en forme SSA, le code ci-dessus comporte après l'instruction if une expression du type « x3 = φ(x1, x2) ». Quel est le rôle de cette fonction φ ?

Comparatifs sur ce thème