Language Implementation Patterns

Literatur  –  Kommentare

Terence Parr
Language Implementation Patterns – Create Your Own Domain-Specific and General Programming Languages

Raleigh, NC 2010
Pragmatic Bookshelf
377 Seiten
US-$ 34,95
ISBN 978-1-93435-645-6

Patterns als Wort weckt Assoziationen zu den von der Gang of Four begründeten Entwurfsmustern, und auf diese bezieht sich Parr kurz in seinem neuen Buch. Dennoch liefert er etwas ganz anderes. Während Gamma et al. sich allgemeinen Lösungsmustern widmeten, handelt es sich hier, dem Untertitel entsprechend, nur um solche, die der Umsetzung domänenspezifischer und allgemeiner Programmiersprachen dienen. Dabei stellt er die Schritte vom einfachen Einlesen einer Datei bis hin zu Interpretern beziehungsweise Übersetzern vor. Eingeteilt ist dies in vier Abschnitte: Grundlagen des Parsing, Analyse von Sprachen, Bau von Interpretern sowie Übersetzung und Generierung von Sprachen. Patterns sind häufig Abwandlungen früher vorgestellter Muster. So liefert der Autor nicht ein Musterbuch, sondern eher ein praktisches Lehrbuch der Spracherkennung und -verarbeitung, das nebenher hilfreiche Patterns enthält.

Praktisch heißt, dass Parr eher kurz und knapp auf Theorien eingeht und die Umsetzung der jeweiligen Problematik in den Vordergrund stellt. Im ersten Abschnitt stellt er Muster vor und erläutert, wie Lexer sowie Parser arbeiten. Dazu nutzt er Java. Es sollte dem Leser jedoch nicht schwer fallen, dies mit anderen Sprachen nachzuvollziehen.

Da die eher mechanische Erstellung von Parsern nicht unbedingt die Erfüllung eines Entwicklers ist, empfiehlt sich hierfür der Einsatz eines Parser-Generators. Deshalb nutzt der Autor für die späteren Abschnitte den von ihm entwickelten ANTLR (den Hauptteil des Codes stellt aber weiterhin Java). Parr erläutert eine Menge entscheidender Programmanschnitte. Zu einem vollständigen Bild wird dies durch den Download der Sources.

Auf das Parsen folgt die interne Darstellung als Syntaxbaum, der ein- oder mehrfach durchlaufen werden kann, um Symboltabellen, Syntaxprüfungen oder Übersetzungen zu erstellen. Der Autor zeigt im Kleinen, wie ein Assembler, ein Disassembler, ein Bytecode-Interpreter, ein SQL-Generator, ein regelbasierter Übersetzer et cetera im Großen funktionieren und gibt einen kurzen Ausblick, was der Leser mit dem nun erworbenen Wissen alles anstellen könnte. Schließlich gibt es eine Menge Problemstellungen, die man relativ einfach und elegant mit einer DSL anstelle spezieller Programmierung lösen könnte. Genau hierfür schärft das Buch den Blick.

Was Sie schon immer über DSL wissen wollten und sich nicht zu fragen getraut haben – Parr schafft es auf weniger als 400 Seiten, ein spannendes Thema kompakt und praxisnah darzustellen. Und mit leichten Vorkenntnissen in ANTLR (oder ähnlich arbeitender Generatoren) ist das Buch selbst ohne praktische Übung verständlich. (ane)