Compilerbau
Compilerbau, deutsch Übersetzerbau, ist eine Disziplin der Informatik, die sich mit dem Entwurf und der Programmierung von Compilern, die einen Quelltext in einen Zielcode umsetzen, beschäftigt. Der Quellcode ist ein meist in einer höheren Programmiersprache verfasstes Programm, das in einen Zielcode einer zumeist weniger ausdrucksstarken Sprache, vorrangig Maschinensprache, umgesetzt wird.
Für den Compilerbau stehen Softwarewerkzeuge (zum Beispiel Parsergeneratoren) zur Verfügung, die aus Spezifikationen Teile eines Compilers wie lexikalische Scanner oder Parser erzeugen (oft fälschlicherweise als Compiler-Compiler oder Compilergenerierung bezeichnet). Dazu gehören:
- Lex – ein Scannergenerator; Open-Source-Alternative: Flex
- Yacc – Yet Another CompilerCompiler, ein Parsergenerator; Open-Source-Alternative: GNU Bison
- JavaCC – Java CompilerCompiler, ein CC implementiert in Java mit vielen Möglichkeiten, der u. a. Scanner- und Parsergenerator vereint.
- Coco/R – Scanner und Parsergenerator für C#, Java, C++, Oberon, Delphi, Ada, Ruby, Unicon. Ist unter einer erweiterten GPL verfügbar.
- ANTLR – ANother Tool for Language Recognition – Parsergenerator für C, C#, C++, Objective C, Java, Python, Ruby, LISP, Perl, PHP, Oberon, Ada 95
- AtoCC – Visueller Scanner- und Parsergenerator für akademische Zwecke (C#, Java, Delphi und Scheme).
Echte Compilergenerierung, also die automatische Generierung eines vollständigen Compilers aus einer formalen Spezifikation, ist noch Forschungsgebiet, z. B. an der Universität der Bundeswehr die Projekte JACCIE und SIC.[1]
Literatur
Bearbeiten- Ernst Helmut Waldschmidt: Optimierungsfragen im Compilerbau. 1974.
- Niklaus Wirth: Grundlagen und Techniken des Compilerbaus. Oldenbourg Wissenschaftsverlag, München 1997, ISBN 3-486-24374-8 (Der Autor entwickelt für eine einfache Sprache einen vollständigen Compiler).
- Reinhard Wilhelm, Dieter Maurer: Übersetzerbau. Theorie, Konstruktion, Generierung. 2, überarbeitete und erweiterte Auflage. Springer, Berlin u. a. 1997, ISBN 3-540-61692-6.
- Reinhard Wilhelm, Helmut Seidl: Übersetzerbau. Virtuelle Maschinen. Springer, Berlin u. a. 2007, ISBN 978-3-540-49596-3.
- Ravi Sethi, Monica S. Lam, Alfred V. Aho, Jeffrey Ullman: Compiler. Prinzipien, Techniken und Werkzeuge. 2., aktualisierte Auflage. Pearson Studium, München u. a. 2008, ISBN 978-3-8273-7097-6.
- Robert Nystrom: Crafting Interpreters. Genever Benning, 2021, ISBN 978-0-9905829-3-9.
Weblinks
Bearbeiten- Niklaus Wirth: Compiler Construction., ISBN 0-201-40353-6. Das oben verlinkte Buch Compilerbau mit Beispielen in Oberon (englisch)
- Jack Crenshaw: Let’s Build a Compiler. Pragmatische Einführung in das Thema Compilerbau (englisch)
- Andreas Kunert: LR(k)-Analyse für Pragmatiker. Pragmatische Einführung in die LR(k)-Analyse