8:00-10:00 Monday; 8:00-10:00 and 1:30-3:30 Wednesday;
8:00-9:30 Thursday; 8:00-9:00 Friday,
You are free
to drop in any time to discuss the class (or anything else for that
matter).
Text:
Compilers: Principles, Techniques and Tools by
A. V. Aho, R. Sethi and J. D. Ullman
Objectives:
In this class, you will develop a compiler for a programming language
of your design/choice.
Your compiler will generate code to run on the Sun SPARC architecture
under the UNIX operating system.
During this development project, you will attain a significant
understanding of many of the techniques and tools used in compiler
development.
Among these will be Lex and YACC which you are encouraged to use
for your compiler.
You will not only learn how to use these tools; we will also study
how they work.
In addition to these, some of the other general software development
tools that you will have available are make and dbx/gdb.
Approximate Schedule of Topics:
Below is a list of topics to be covered during this course.
Section and chapter numbers refer to the course text.
Overview of compilers and the compiler writing process, Ch. 1, 2, 11, 12,
App. A.
Lexical Analysis, Ch. 3.
Parsing, Ch. 4.
Symbol tables and related topics, Ch. 6 and 7.
Intermediate code, Ch. 8.
Code generation, Ch. 9.
Optimization, Ch. 10.
The material of Chapter 5 and some additional material on some more
advanced/modern techniques may be covered if time permits.
Grading:
The compiler development project will be broken down into 6 phases
totaling 70% of your grade.
A mid-term and a final exam will comprise the remaining 30%.
The exact breakdown is as follows:
Mid-Term Exam 10%
Final Exam 20%
Language Design 10%
Lexical Analyzer 10%
Parser 12%
Symbol Table 10%
Intermediate Code Generation 13%
Code Generation 15%
All work will be conducted according to Rhodes' Honor Code.