Wenn Du Dich für Compilerbau interessierst, solltest Du unbedingt das Buch "Crafting Interpreters" von Robert Nystrom lesen. Es ist sehr kurzweilig und äußerst anschaulich geschrieben. Für alle, die sich das Buch nicht leisten können, hat der Autor es hier kostenlos in Html-Form veröffentlicht.
Ein Schüler von mir (Lukas) fragte mich, wie ein Compiler (z.B. EOS oder die Online-IDE) programmiert wird. Leider pflegen alle Artikel, die ich dazu im Internet finde, einen recht theoretischen Zugang zum Thema. Daher möchte ich die Sache im Folgenden so erklären, wie ich sie (damals als Schüler in der 12. Jahrgangsstufe) an einem einfachen, in Pascal geschriebenen Compiler gelernt habe.
Ein Compiler ist ein Computerprogramm, das einen in einer Programmiersprache verfassten Programmtext einliest und in eine andere Programmiersprache umwandelt oder direkt ausführt. Er arbeitet üblicherweise in drei Schritten, die nacheinander ausgeführt werden:
Im Folgenden wird die Funktionsweise eines Compilers vorgestellt, der mathematische Terme (z.B. 2 * (3 + a) - b
) mit gegebenen Variablenbelegungen zur Laufzeit auswerten kann. In einem zweiten Schritt wird dieser Compiler zu einer einfachen Programmiersprache erweitert, die Wiederholungen, Zuweisungen und eine einfach Print-Anweisung enthält.
Ihr wollt sicher sehen, was der Compiler kann, der im Rahmen dieses Tutorials erstellt wird, daher hier gleich ein Blick auf das fertige Programm.
Unser Compiler unten bekommt ein kleines Testprogramm übergeben. Er verarbeitet es in drei Schritten:
Hier das Testprogramm, das unser Compiler übersetzen wird.:
a = 1; b = 2; while(a < 10) { a = a + 1; b = b * 2; print(b); }
Schreibe weitere Testprogramme mit der oben angegebenen Syntax, füge sie unten ein und lasse sie vom Compiler übersetzen und ausführen!