Compilers translate the source code of programs in a high-levelprogramming language into executable (virtual) machine code.Nowadays, compilers are typically integrated into developmentenvironments providing features like syntax highlighting, contentassistance, live error reporting, and continuous target codegeneration. This course is about the efficient construction ofcompilers and their integration in the IDE. It consists of threeparts:

The first part focuses on declarative specification of compilercomponents as supported by state-of-the-art tools for compilerconstruction, including lexical syntax, context-free syntax, staticsemantics, and code generation.

In the second part, we address techniques for the compilation ofimperative and object-oriented languages, including activationrecords, memory management, register allocation, and optimisationtechniques in detail.

The third part takes a closer look on the inside working of compilercomponents and their generators. In particular, we study parsingalgorithms and parser generation.

The practical work consists of constructing a compiler for a smallobject-oriented language using the tools introduced in the first partof the course.

Study Goals

- to be able to specify a language in a declarative style

- to be able to construct a compiler from such specifications with state-of-the-art compiler construction tools

- to understand different language aspects

- to understand the working of compiler components realising these aspects