MCS-388: Compiler Design (Spring 2014)
General information
and
schedule
Homework (
homework policy
)
Homework 1
Homework 2
Homework 3
Homework 4
Homework 5
Homework 6
Labs
Lab 1: Generating Code from ASTs
Lab 2: Scanning and Parsing
Lab 3: Adding Variables
Lab 4: Control Flow and Scoping
Lab 5: Procedures – The Basics
Lab 6: Procedures – Further Features
Lab 7: Wildcard Lab
Examples
Recursive-descent parser in Python
scanner.jflex with extended numbers
LL(1) example
SLR example
SSA example: fib
source in C
, naive
LLVM using store/load
, partially optimized
LLVM using phi
produced by mem2reg
C source code for optimization example
Lazy Code Motion example
flowgraph
Other links
Errata list for the textbook
JFlex User's Manual
and
Main JFlex information page
CUP User's Manual
and
Main CUP information page
LLVM Language Reference Manual
and
Main LLVM information page
Documentation for the Java Platform, Standard Edition
, including
the API documentation
The Java Tutorial
Instructor:
Max Hailperin
Let me know what you think
I would appreciate feedback about the course. I welcome your comments in person or by email to
max@gustavus.edu
.