Compiler Construction

Compiler Construction

Belegnummer: 30.2548 Modulbeschreibung


The lecture starts on Thursday, October 12 at 10:15 AM in room D14/0.04.

The laboratory ("Praktikum") starts on Friday 20 October (for the X-Raster, or 28 October for the Y-Raster) at 8:30 AM in lab D14/310.


  1. Please check the dates (and room numbers) in the OBS.  Date changes will be announced first via the OBS.  Should contradictions appear between the OBS and the dates given here, remember: the OBS is always right!
  2. Prof. Moore is only responsible for the lecture this semester. Mr. Nouri Alnahawi is responsible for the lab!

Lecture Notes: Please Log In!

The lecture notes are available for students and faculty of the h_da (only).  Please log in (for example at the top of this page) and then return to this page to see the lecture notes.

Laboratory ("Praktikum")

This year, the lab is offered by Nouri Alnahawi, and not by Prof. Moore.

During the first meeting (check the OBS to see when your first meeting is) the details of the lab will be discussed, and students will be assigned to teams. Thus, anyone who is unexcused absent on this date will not be able to take part in the lab and will forfeit their "seat" ("Platz"). Further, passing the lab is a prerequisite to take the final exam, so if you do not take part in the lab, you may not take the final and will not receive a grade.

Conversely, if you did not receive a seat in the lab yet, come to the lab anyway -- you might get a seat which someone else forfeited.


The description below was written in the past and is, to the best of my knowledge, still correct -- but if Mr. Alnahawi tells you something different, his word counts!

The Laboratory is a "Notebook" lab; please bring your notebooks with you to the lab!

Students will work in 2-person teams. Assignments will be programmed in C++.The goal of the lab is to build a compiler (in C++) that compiles a subset of the programming language "Go".

 Students should please familiarize themselves with (i.e. have a first look at) the web site at  The  Specification section is particularly important. The "Tour of Go" is also recommended. While you will not program your compiler in Go, you will need still to write test input in Go for your compiler; so you will need to know enough Go to write both correct (and intentionally incorrect) Go test programs.

We will be working with the following three compiler tools:

  1. Flex 
  2. Bison
  3. The LLVM Toolkit

Flex and Bison will be used starting with Exercise 2, LLVM will be introduced in Exercise 3.  Nonetheless, it would be good to have a look at all three as soon as possible.