Week | Monday | Wednesday | Duedates |
---|---|---|---|
1 | No tutorials this week | Administrivia Domain Specific Languages |
|
2 | Compiler Structure Reading: Ch 1 |
Exercise: Specifying a Language Scanner Starter (final) Parser Starter (final) Mini-Java CUP Example |
By Friday: Team signups and proposals |
3 | Scanning Reading: Ch 2 |
Workshop: Language Spec Feedback Building a Compiler (Liut) -- draft Lex Example (solution) Scanning test file |
|
4 | Parsing Reading: Ch 3 |
Exercise: Parsing Grammar Spec Example Skeleton yacc Calculator (flex) Calculator (yacc) |
By Friday: Sprint 0 -- Language Specification (15%) |
5 | Parsing, continued Reading: Ch 4 |
Workshop: Parsing Your Language Building a Compiler (Liut) -- updated |
|
6 | Intermediate Forms Reading: Ch 5 |
Exercise: Code Generation AST Example MiniJava Parser and Backend (zip) |
By Friday: Sprint 1 -- Parser (10%) |
7 | Case: LLVM Reading: LLVM Overview |
Workshop: Generating Your Target Language | |
Reading week! | |||
8 | Registers Reading: Ch 13 (skim only) |
Exercise: Common Optimizations For Reference: Ch 8 (Intro to optimization) and Ch 10 (Scalar Optimizations) |
By Friday: Sprint 2 -- Backend (10%) |
9 | Intro to Analysis Reading: Ch 9 (Dataflow Analysis) |
Workshop: Feedback on Language Extension | |
10 | Test Prep | Term Test | Wednesday: Term test (20%) By Friday: Sprint 3 -- Extended type / data structure (10%) |
11 | No lecture | Workshop: Preparing a demo Slides |
|
12 | No lecture | Project Demos | Wednesday: Project demos (15%) By Friday: Sprint 4 -- Optimization / Extension (20%) |