Engineering project Compiler Construction 2010
Course documents
Practical work
The goal of the engineering project is to acquire knowledge and hands-on
experience of compiler-writing tools (flex, bison, LLnextgen) and the
implementation techniques for modern programming language constructs
(e.g., dynamic binding). This year's assignments consist of modifying
and extending the existing reference compiler for the imperative
language Asterix.
You will be working in groups of two (2) students.
Please register your group (names + NetIDs) by sending an
e-mail to Venkat Iyer (v.g.iyer@tudelft.nl), who will enter you into the
CPM submisison system (see below).
Matching service: people that cannot find a partner for the lab-work may also
send an e-mail to Venkat, who will then team up individuals.
-
The assignments can be found here.
-
The Asterix reference manual [ html | pdf ].
- The Asterix reference compiler (gzipped tar file)
-
Note that we do inspect your code thoroughly, and be advised to avoid the
following common coding errors.
-
The assignments must be handed in through the CPM system.
Software
The software needed for the practical work is installed at the
"standard" machines located in the labs
at Drebbelweg. During the official lab hours (see assignments)
an instructor will be present for answering questions and assisting with
practical problems (e.g., debugging code).
Those who want to work on the assignments at home can use the following
software tools:
- LLnextgen (parser generator)
- Standard tools (GNU-versions): gcc, gmake, flex, bison
- Windows users: the cygwin UNIX emulation package (shell, gcc compiler, flex, yacc, etc.)
On-line support
-
Consult Panoramix
for his knowledge of records, objects, and x86 assembly.
[known
bugs]
-
Consult Diagnostix
for his knowledge of crafting test sets.
-
Leon Planken's concise grammar of the Asterix language can be found
here.
-
Information about the very helpful GDB debugger can be found in this short tutorial
and the reference
manual.
People preferring a graphical user interface may consider the DDD tool.
-
Memory leaks and access errors can be detected through the valgrind tool. See also Gertjan Halkes' explanation
on how to interpret valgrind's output.