Compilateur de compilateur
Un article de Wikipédia, l'encyclopédie libre.
Cet article est une ébauche à compléter concernant l'informatique, vous pouvez partager vos connaissances en le modifiant. |
Un compilateur de compilateur est un programme informatique capable de générer la totalité ou certaines parties de compilateur (partie analyse lexicale, partie analyse syntaxique, partie analyse sémantique, partie synthèse, partie de gestion des erreurs...) pour former un tout cohérent, le code source du compilateur souhaité.
[modifier] Description
Comme un compilateur classique, il accepte un langage source, par exemple une grammaire couplée à un ensemble d'actions. Il génère un langage cible, le plus souvent les parties analyse lexicale et syntaxique. Les parties analyse sémantique et synthèse sont généralement trop proches du langage cible pour être produites automatiquement et leur réalisation est laissée à la charge de l'utilisateur. Certains compilateurs de compilateur permettent de générer également la partie de gestion des erreurs.
[modifier] Quelques exemples
- lex et yacc, ou Flex [1] et Bison [2], permettent respectivement de produire des analyseurs lexicaux et des analyseurs syntaxiques en langage C. Couplés, ils forment un compilateur de compilateur à analyse ascendante LALR.
- ANTLR[3] permet de générer le code d'un compilateur à analyse descendante LL(k).
- SableCC[4] est un générateur de compilateur java LALR.
- JavaCC[5] est un autre générateur de compilateur java.
- Coco/R[6] est un générateur simple de compilateur C#/Java/C++ et autres.
- CodeWorker interprète une grammaire BNF et permet de générer du code, y compris en injectant celui-ci dans du code existant.