15-411 Compiler Design
This page always under construction. Links to useful resources are welcome.
Source Language: C0
The labs use increasingly more complete subsets of the C0
programming language that has been designed for 15-122
Principles of Imperative Computation, a freshman-level
course at Carnegie Mellon University. C0 is a small safe
subset of C with an unambiguous semantics. You are
strongly encourage to learn C0, since you will be writing
a compiler for this language.
Target Languages and Tools
x86-64 Machine-Level Programming
The following documents will help you fathom the depths of
machine-level programming on the new x86-64 machines, a 64-bit
extension of the Intel instruction set.
IA32 and Assembler Reference Material
The following are for the older Intel x86 architectures.
See the newer references above for the x86-64 (also known as
LLVM is a potential second target for the compiler for Lab 6
Writing a garbage collector for C0 is one of the interesting
options for Lab 6
- Standard ML of New Jersey (SML/NJ)
A highly optimizing, whole program compiler mostly compatible with SML/NJ
Another high quality compiler
- Standard ML Libraries and Documentation
- Java API
- JLex: lexer generator
- JFLex: lexer generator
- CUP: LALR parser generator
- ANTLR: lexer and LL parser generator
- JavaCC: lexer and LL parser generator
For Fall 2014, we strongly discourage the use of Scala due to
efficiency issues explained in lecture.
Prior Course Instances
| Labs & Assignments