Léonard Figuinha
Compiler · C++

Tiger

A compiler does not just reject a wrong program: it has to say where, and why.

What I did

  • The full chain, from source to output. Lexical and syntactic analysis, building the abstract syntax tree, then the passes that walk and rewrite it.
  • Semantic analysis. Binding identifiers to their declaration under the scoping rules, type checking, and escape analysis — the variables a nested function captures, which therefore cannot stay on the stack.
  • Tree transformations. Desugaring surface constructs down to a simpler core, tree cloning, and handling the language's object constructs.

Stack

C++FlexBisonAutomakeVisitors

How it works

Tiger — how it works
This project has no interface: the diagram describes its real architecture — it is not a screenshot.