During the Spring of 2009, I will be teaching CS 605, which is a course in compiler construction. Students will build a complete compiler for a small language from a set of skeletons implementing a subset of the language. Students will work in teams of two students on this project, which will be the major determinant of the student's grade. This course is normally considered to be very challenging and to require a large amount of student time and a lot of Java programming. Course materials, including the skeletons of the project be found later on this page. The project will be built in Java. The project will be very Object-Oriented. You can get a copy of the Java Tutorial (2ed) by Campione and Walrath from Addison-Wesley.
You will need access to a recent version of a compiler for
Java. For Java, version 1.5 or later will be REQUIRED, including inner classes.
You will not be able to adapt an older compiler for this course. The Java Development Kit from Sun is free (visit java.sun.com), but is somewhat awkward to use without an IDE.
Sun also provides Documentation
and tutorials. Here is Sun's Java
Tutorial The integrated environments
set themselves up when you install them. For this course we will use Eclipse from eclipse.org.
It is very complete and is free, but takes some learning. You will need version 3. We need Eclipse Version 3 due to some integrated tools that work with it that we need.
The compiler will be built using an Attribute Grammar system
called CoCo/R (Compiler-Compiler) from H. Mossenbock in Linz, Austria. Here
is the home page of COCO. Note, however, that I have modified some of the
files to be more compatible with what we shall do. The modidifed files are in
the course materials (see below).
The compiler will be built using an Attribute Grammar system called CoCo/R (Compiler-Compiler) from H. Mossenbock in Linz, Austria. Here is the home page of COCO. Note, however, that I have modified some of the files to be more compatible with what we shall do. The modidifed files are in the course materials (see below).
The next link describes a language is suitable for a reasonable student compiler project. The language you will compile in this course is similar to this one, but NOT the same.
GCL: A Language For A Compiler Project
If you are planning to take this course, you will find the Languages Principles Course to be helpful. Some of the theoretical background of compilers is discussed there, as well as in the course on Computability and Automata.
Throughout the term your work is to be submitted in a plain manila folder. This folder should have your name on it on the outside and on the tab. At the end of the term your work is to be submitted bound into an ACCOPress or equivalent binder. You should tape an envelope conataining the disk with all of your code to the inside of the binder. Do not use three ring binders to submit your work. There is more on submitting your work in the course notes.
There are many things you need to do in this course to be successful. The online syllabus can help with this. It also contains a FAQ.
Students develop a compiler starting with skeleton framework for a simple language. The compiler will be developed in Java. There is also a pre-built sample compiler that you can test your own compiler against. You can ftp the course software by clicking below.
This software is now up to date. These links are to the 2009 versions.
Additional materials, including updates to some of the packaged files are occasionally made here. At this time there is nothing avaliable.
If you have trouble with any of these files, send me EMAIL at email@example.com.
Please inform me about typos and other errors.
Back to Joseph Bergin's Home Page
Last Updated: January 19, 2009