You are hereComputer / Compilerbau

Compilerbau


So manch einer wird wohl in seiner Laufbahn als Programmierer in den 80ern mit einem Borland(R)-Produkt, nämlich Turbo-Pascal, begonnen haben. Dieses Produkt zeichnete sich damals durch ein paar spezielle Merkmale aus:

  • durchaus vernünftiger (d.h. für Schüler bezahlbarer) Preis
  • enorme Geschwindigkeit beim Übersetzen
  • gute Code-Qualität des Outputs
  • Integrierter Editor (IDE)

So habe auch ich begonnen - Turbo-Pascal auf einem Z80-Prozessor (Sharp MZ-821), das war schon was! Später dann der erste 80386, wau, hab' ich mir dann noch gleich einen 80387-Mathe-Coprozessor vom Taschengeld abgespart. Ein paar ganz wenige Anwendungen waren damit aber wirklich sowas von schneller! Dann ein 486er mit 100Mhz CPU-Takt. Heute ists ein Dual-Core-1.8GHz Laptop.
In jedem Fall hat das damalige Entwicklungssystem, aber vielmehr eigentlich die Sprache Pascal eine ganz besondere Leidenschaft erzeugt: Die Programmiersprache ansich.

Manch einer hat sich immer über die Fehlermeldung "Semicolon expected" in PASCAL geärgert, an anderer Stelle durfte wieder kein Semicolon hin. Warum ist das so, dass manche damit so Schwierigkeiten hatten, anderen aber (so auch mir) völlig klar war, dass vor einem ELSE niemals ein Semicolon kommen KANN, aber vor einem END eines kommen DARF ? Der Schlüssel hierfür liegt in der Sprachbeschreibung, Sprachdefinition.

Wie auch immer, in jedem Fall habe ich dann begonnen Scanner und Parser zu bauen, die eine bestimmte Programmiersprache (bzw. Programmquelltexte dieser Programmiersprache) zerlegen konnten. Recht deutlich wurde dann gleich:

Um eine Programmiersprache zu lernen, schreib' einen Compiler dafür!

Eines muss ich hier natürlich gleich einschränken: Einen 'echten' Compiler zu bauen ist ein recht kompliziertes und umfangreiches Unterfangen. Da entstehen recht schnell mal Programmsysteme von mehreren tausend, wenn nicht zehntausenden Zeilen Code. In den allermeisten Fällen ist es bei meinen bisherigen Versuchen beim Scanner und Parser geblieben - also den wesentlichen Modulen, die für die Zerlegung des Quelltextes und dem Prüfen auf Sprachkonformität zuständig sind.

Weiter gehts im Compilerbau...