Compiler and Langauge Design
This tutorial will focus on compilers and their implementation. It will follow Matt Might’s course on compilers. The only modification will be that the final project (#5, which is not present on the web page) will be replaced with the task of implementing a parser and lexer for an S-Expression based language as well of ground work on a translator from the parsers output to C/C++. Addition material will also be drawn from Swarthmore's compiler course when Matt Might's articles prove too terse.
Resources:
Work:
tentative schedele
Sep 7 2016
- Overview: Compilers and Python
- Overview: Python
- Overview: Python and Racket
Sep 14 2016
- Lexing: Regular expressions and languages; Lexers
- Lexing: Regex-matching via derivatives
- Lexing: Lexical analysis of Python
Sep 21 2016
Sep 28 2016
- Parsing: Context-free grammars (videos, blog)
- Parsing: CFG notations; recursive descent
- Parsing: The derivative of context-free languages
Oct 5 2016 Project 2
Oct 12 2016
- Transformation: Desugaring classes
- Transformation: Moar desugaring
- Transformation: Tree transforms
Oct 12 2016
Oct 19 2016
- Transformation: Continuations and CPS transformation
- Transformation: Compiling exceptions with continuations
- Transformation: Desugaring
Oct 26 2016
- Transformation: Closure-conversion and λ-lifting
- Transformation: Compiling to high-level assembly
- Register allocation and garbage collection
Nov 2 2016
- CESK machines: Forward and Backward
- Static analysis: Why and how
Nov 9 2016
Until the end of the semester
- the S-expression parser and lexer will be developed