Léonard Figuinha
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

Comment ça marche

Tiger — schéma de fonctionnement
Ce projet n'a pas d'interface : le schéma décrit son architecture réelle, il ne s'agit pas d'une capture d'écran.