Nano
'95: a
compiler from Pico to Java
This was an interesting but problematic project. It was interesting
because I liked doing something new and writing a compiler was
something new for me. However the 3 involved languages caused some
troubles. First there is C, which is a nice language but if your coming
from Scheme and Pascal this language has a certain 'bare-to-the-metal'
allure.
So instead of focusing on the compiler, I first had to focus on
memory-management issues. Second, the language Pico was
of no interest to me. The language was created by my adviser (Theo
D'Hondt) and as
such I had little choice but to use it. As it turned out, the language
(at that time) had certain ill defined features such as
dynamic scoping and
random function declarations (that
is to
say, a definition can occur anywhere in the code, also inside an
if-statement and the declaration of a named lambda could occur across
the caller and the callee. Go figure). The last feature was noticed
only very late and made
writing the compiler an even more difficult job than it already was.
All in all, I could not create
a working compiler that would actually optimize the code execution as
one is used with pascal and C, C++ compilers. Then the last
problem was the target-language:
Java. In those days I used v 0.9.2, which is one of the first versions
released by Sun. Needless to say: the target was moving so fast I had
to learn new Java features with each new release. In only 8 months the
language evolved so strongly that by the end of the year I was working
with release 1.4.2 (in which RMI was already present !). Anyway, we
still remember with a certain dissatisfaction the CLASSPATH misery.
Voorstudie
Tussentijdse Raportering 1
Tussentijdse Raportering 2
Manual
Final Report
Self Evaluation
Documented Source Code
Source Code (.arj)