This practical course on compiler construction consists of two assignments. We start from an existing compiler for a simple and extensible language, called Asterix. The compiler is written in ANSI-C, and also generates ANSI-C. The compiler has to be modified and extended, as is described in the following section. The main purposes of this course are to get acquainted with modern compiler writing tools, and to develop algorithms used for compiling contemporary language paradigms.

We strongly suggest that the assignments be implemented by groups of two persons, because of the amount of work involved. It is not allowed to work with groups of more than two persons. When working as a team you are not allowed to have each member do one complete assignment, because that means that the person doing only the introductory assignment 1 does not learn from the in-depth assignment 2. (The reverse does not hold, since completing assignment 2 means incorporating the knowledge/experience gained during assignment 1, hence, the person doing assignment 2 effectively needs to perform a large fraction of assignment 1 anyway.)

Carefully read this document before starting programming.

K.G. Langendoen 2007-11-09