Programming Language Experiments
A language with integral primitives, arbitrarily-nested additions and subtractions, and a facility to grab integral input from the user.
Nonterminal | Expression |
---|---|
exp | int | (read) | (- exp) | (+ exp exp) |
R0 | (program exp) |
An extension of R0 with variables. This is the language we'll be compiling down to assembly.
Nonterminal | Expression |
---|---|
exp | int | var | (read) | (- exp) | (+ exp exp) | (let ([var exp]) exp) |
R1 | (program exp) |
- Abelson, H., Sussman, G.J. (1996) Structure and Interpretation of Computer Programs, 2nd Edition, MIT.
- Brown, A., Wilson, G. (2011) The Architecture Of Open Source Applications, Volume 1.
- Brown, A., Wilson, G. (2012) The Architecture Of Open Source Applications, Volume 2.
- Friedman, D., Wand, M. (2008) Essentials of Programming Languages, 3rd Edition, MIT.
- Ghuloum, A. (2006) An Incremental Approach to Compiler Construction, Technical Report, Chicago.
- Ghuloum, A. (2006) Compilers: Backend to Frontend and Back to Front Again, Tutorial.
- Lattner, C. (2011) "LLVM". In (Brown, Wilson 2011), Chapter 11.
- Marlow, S., Peyton-Jones, S. (2012) "The Glasgow Haskell Compiler". In (Brown, Wilson 2012), Chapter 5.
- Siek, J. (2017) Essentials of Compilation: An Incremental Approach, Lecture Notes.