As scientists and engineers, we use compilers almost every day. Have you ever wondered what happens behind the scenes when you compile your code? Ever wondered about the exact meaning of a parse error? In this course, you will undertake the rewarding challenge of implementing a compiler! The skill set acquired during the semester will include several compiler-related tools and an understanding of the theory behind compilation. A significant part of the course consists of writing a compiler using the C programming language and software tools such as lex and yacc.
Below is a rough course outline.
- Structure of Compilers
- Lexical Analysis (Scanning)
- Syntactic Analysis (Parsing)
- Parse Trees, and Abstract Syntax Trees
- Semantic Analysis
- Symbol Tables
- Type Checking
- Activation Records
- Intermediate Code
- Instruction Selection
- Dataflow Analysis
- Register Allocation
C or better in CS 333 and CS 340 (or consent of the instructor).
Modern Compiler Implementation in C, by Andrew Appel, ISBN 0-521-60765-5
IMPORTANT: When you get your book, be sure to apply the corrections listed on the