next up previous contents
suivant: Grammaire monter: Le compilateur précédent: Analyse lexicale   Table des matières

Analyse syntaxique

L'analyse syntaxique suit l'analyse lexicale. Elle part du flux de lexèmes fourni par cette dernière, et en obtient une représentation interne. Cette transformation est réalisée par une méthode du type "compilation dirigée par la syntaxe", l'analyse syntaxique étant un processus du type "descente récursive". Plus concrètement, on essaie de calquer le flux de lexèmes sur la grammaire du langage, afin de voir s'il correspond bien à une phrase valide de celui-ci. Nous parcourons ainsi (virtuellement) un diagramme syntaxique dont les n\oe uds sont les symboles, terminaux ou non, de la grammaire. Ce diagramme est décoré par des points de génération qui construisent progressivement les structures de données correspondantes au flux d'entrée initial. Cet analyseur syntaxique, qui parcourt le diagramme syntaxique, est généré à l'aide de l'outil Yacc. Tout comme Lex, Yacc génère du code C à partir d'un fichier de description. Ce dernier comporte notamment une partie règle qui définit la grammaire de notre langage, ainsi que les points de génération. On se reportera au fichier glorrp.y pour plus de détails.
En fait, les deux analyseurs ne travaillent pas l'un après l'autre mais simultanément. Le flux d'entrée n'est pas encore terminé que la construction des structures de données a déjà commencé à l'autre extrémité de la chaîne de compilation. Ce fonctionnement en pipeline est plutôt obscur pour nous : il est dû au travail de Lex et de Yacc. Dans la suite de ce chapitre, nous revenons plus précisément sur les différents aspects de l'analyse syntaxique.
next up previous contents
suivant: Grammaire monter: Le compilateur précédent: Analyse lexicale   Table des matières
Alexandre DAGAN
2000-07-07