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.

Tussentijdse Raportering 1
Tussentijdse Raportering 2
Final Report
Self Evaluation
Documented Source Code
Source Code (.arj)