Compilateur · C++
Tiger
Un compilateur ne se contente pas de refuser un programme faux : il doit dire où, et pourquoi.
Ce que j'y ai fait
- La chaîne complète, de la source à la sortie. Analyse lexicale et syntaxique, construction de l'arbre syntaxique abstrait, puis les passes qui le parcourent et le réécrivent.
- L'analyse sémantique. Liaison des identifiants à leur déclaration selon les règles de portée, vérification de types, et détection des variables échappées — celles qu'une fonction imbriquée capture et qui ne peuvent donc pas rester en pile.
- Les transformations d'arbre. Désucrage des constructions de surface vers un noyau plus simple, clonage d'arbre, et le traitement des constructions objet du langage.
Stack
C++FlexBisonAutomakeVisitors