suivant: Grammaire
monter: Le compilateur
précédent: Analyse lexicale
  Table des matières
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
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.
suivant: Grammaire
monter: Le compilateur
précédent: Analyse lexicale
  Table des matières
Alexandre DAGAN
2000-07-07