Skip to content

Latest commit

 

History

History

src

pl-experiments

Programming Language Experiments

Language R0

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)

Language R1

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)

Sources

  • 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.