This document provides an overview of compiler construction topics including:
- Data types and type checking which ensures program elements make sense under language type rules.
- Intermediate code generation where the compiler constructs representations closer to the source or target languages.
- Variants of syntax trees like directed acyclic graphs which more succinctly represent expressions and identify common subexpressions.
- Three-address code and static single-assignment form which are intermediate representations facilitating optimizations.