Introduction
Le but de ce document est l'écriture d'un simple compilateur d'un
langage << à la Pascal >>. L'approche n'est pas de traiter des
différentes méthodes de compilation, mais de détailler la
construction d'un compilateur selon une méthode donnée : l'analyse
récursive descendante. Le grand avantage de celle-ci est que le
compilateur peut être construit directement à partir de la syntaxe
du langage ; l'analyse sémantique et la génération de code sont
<< ajoutées >> à cette analyse dirigée par la syntaxe.
Pourquoi écrire un compilateur ? Il est à peu près certain que
la majorité des informaticiens n'auront jamais à écrire de
compilateur. Cependant, mener à bien l'écriture d'un << gros >>
programme, le tester, documenter... a déjà un intérêt en
soi. De plus, les algorithmes employés dans un compilateur sont
repris dans la résolution d'autres problèmes : manipulation de
listes de recherche (gestion de la table des symboles), vérification
de la correction d'enregistrements (analyse syntaxique), traitement
de caractères, de mots (grammaire BNF). Enfin, il semble
intéressant pour un programmeur de connaître les dessous des
choses ; comprendre comment les programmes se compilent et
s'exécutent aide à la compréhension des limitations,
obligations... imposées par les langages.
Chacun des chapitres introduit une nouvelle notion, propose des
exercices, et amène, à travers une série de travaux pratiques,
à la réalisation d'une partie du compilateur.
L'ensemble des travaux pratiques doit aboutir à
-
la réalisation effective d'un compilateur pour un sous-ensemble du
langage Pascal ;
- le test du compilateur ;
- un manuel de maintenance du compilateur destiné à
l'informaticien chargé de maintenir/étendre le produit ;
- un manuel d'utilisation détaillant la mise en oeuvre du produit, la
syntaxe et la sémantique du langage, etc.