Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 15-Nov-2005
< Voriger Tag   Nächster Tag >

Dienstag, 15. November 2005

Java: Compilerbau mit SableCC

Ende September ist SableCC 3.1 erschienen, jetzt habe ich jenes Objekt orientierte Gerüst zur Entwicklung von Compilern und Interpretern in Java mal ausprobiert.

SableCC ähnelt LEX + YACC, so dass man damit schnell zurechtkommt, verfolgt jedoch einen anderen Ansatz.

Lexer und Parser in einem

Lexer und Parser sind nicht in seperate Programme und Dateien getrennt, sondern in SableCC miteinander vereint. In der .grammar-Datei stehen die Helpers (Lexer), Tokens (Lexer) und Produktionsregeln (Parser) in einer Datei - so ist alles schön übersichtlich zusammen.

Syntaxbaum statt Actions

Daraus erzeugt SableCC die Java-Klassen für den Lexer und Parser und, abweichend von YACC, zusätzlich die Knoten für den Syntaxbaum (AST) und Routinen zum Durchwandern dieses Syntaxbaum (analysis). SableCC arbeitet also nicht mit den von YACC bekannten Actions, sondern erzeugt gleich selbst einen Syntaxbaum. Dieser wird von der apply() Methode durchlaufen, die via Visitor-Pattern die eigenen Methoden aufruft, die den gewünschten Programmcode generieren. Damit lässt sich mit wenig Aufwand schnell ein erster Compiler schreiben.

Beispiele

Ein einführendes Beispiel gibt es im dritten Kapitel des SableCC-Handbuchs: "3.1 Introduction to SableCC". Die drei nachfolgenden Kapitel behandeln die Themen: Lexer, Parser und Visitor-Pattern.

Ein Tutorial "Writing a compiler with SableCC" und kompletter Pacal-S Compiler, der Pascal-P4-Code für den dazu passenden Interpreter erzeugt. Sowie auf der Website von Roger Keays u.a. eine Grammatik für ISO-C und die nützlichen Text AST Printer- und GUI AST Displayer-Klassen zur Ausgabe des Syntaxbaums, welche beim Verstehenlernen und Debuggen des generierten Parsers und eigenen Programmcodes helfen.

[Direktlink]

< Voriger Tag   Nächster Tag >

  RSS V0.91

<November 2005 >
 010203040506
07080910111213
14151617181920
21222324252627
282930    

Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 15-Nov-2005
(C) 2000-2018 by Sven Drieling