Topic 6 · Week 15

Topic 6 — Compiler Design and Implementation

Measure it, document it, defend it.

1. Lexicalchars → tokensscanner.l2. Syntaxtokens → ASTparser.y3. SemanticAST → checked ASTsemantic.c4. IRAST → TACtac.c5. OptimizeTAC → better TACtac.c6. CodeGenTAC → MIPScodegen.c

Week 15  ·  Dec 14 – Dec 20, 2026  ·  Measure it, document it, defend it.

Start here

Lecture notes →

No new syntax. What separates a project from a piece of engineering: honest measurement, an accurate account of the limits, and knowing what a production compiler does that yours does not.

The full theory for this topic, with diagrams, worked examples and Dragon Book references. This page you are on is only an index.

Your starter code

The compiler you are extending this topic, with every TODO spelled out.
student/topic-6-complete-compiler/

Assignment: Project 6 · Complete Compiler (Benchmark)

Full requirements and submission checklist. Due Dec 20, 2026.

Stuck on the tools rather than the theory? The toolchain tutorials cover make, Git and GitHub, flex and bison.

Class activities

One per class meeting. Ungraded — they exist so that the assignment is not the first time you meet the idea.

Activity 1 — Benchmark Your Compiler

Three benchmarks, four metrics, three repeated runs, one Amdahl calculation — and a number you could defend to a sceptic.

Activity 2 — Cold-Start README Test and Demo Dry Run

Somebody who has never seen your compiler tries to build it from your README. Then you explain it out loud and they interrupt.