Course pages 2013–14
Compiler Construction
Lecture Slides :
- Lectures 1-4
- One-slide per page: cc2014_L1_to_L4.pdf
- Two-slides per page: cc2014_L1_to_L4_2up.pdf
- Lecture 5
- One-slide per page: cc2014_L5.pdf
- Two-slides per page: cc2014_L5_2up.pdf
- Lectures 6-7 (updated 6/2/2014 with minor addition to slide 3, a correction to slides 4 and 24)
- One-slide per page: cc2014_L6_L7.pdf
- Two-slides per page: cc2014_L6_L7_2up.pdf
- Lecture 8
- One-slide per page: cc2014_L8.pdf
- Two-slides per page: cc2014_L8_2up.pdf
- Recommended reading (not examinable): A Unified Theory of Garbage Collection.
- Lecture 9
- One-slide per page: cc2014_L9.pdf
- Two-slides per page: cc2014_L9_2up.pdf
- Lecture 10
- One-slide per page: cc2014_L10.pdf
- Two-slides per page: cc2014_L10_2up.pdf
- Lectures 11-13
- One-slide per page: cc2014_L11_to_14.pdf
- Two-slides per page: cc2014_L11_to_14_2up.pdf
- Five slides are missing "prime" marks ('). Here are corrections.
- One-slide per page: cc2014_L11_to_14_CORRECTIONS.pdf
- Two-slides per page: cc2014_L11_to_14_CORRECTIONS_2up.pdf
- A few experiments with YACC : yacc_lex_tests.tar.gz
- Lectures 14
- One-slide per page: cc2014_L14.pdf
- Two-slides per page: cc2014_L14_2up.pdf
- Lectures 15, 16 :
- One-slide per page: cc2014_L15_L16.pdf
- Two-slides per page: cc2014_L15_L16_2up.pdf
Lecture notes :
- cc_notes_2014.pdf. The lecture slides have been rewritten this year to present the material via the Slang (Simple LANGuage) compilers. The lecture concepts are about the same as those in these notes, just presented differently.
Associated source code:
- Slang.1 compiler and virtual machines
- The compiler (in mosml) slang1.tar.gz
- The Virtual Register Macine (VRM.0, in C) vrm0.tar.gz
- The Virtual Stack Macine (VSM.0, in C) vsm0.tar.gz
- Slang.3 compiler and VSM.2 virtual machine
- The compiler (in mosml) slang3.tar.gz. (UPDATED Thu Mar 6 10:29:13 GMT 2014)
- The Virtual Stack Macine (VSM.2, in C) vsm2.tar.gz
- Thanks goes to Raphaël Proust for help with this!
Problem sets:
Of interest:
- We are using a "nanopass" approach to describing compilers (but using SML rather than Scheme).