- ANTLR
-
ANTLR ist ein objektorientierter Parsergenerator, der seit 1989 von Terence Parr an der Universität von San Francisco entwickelt wird. Die Abkürzung ANTLR steht für ANother Tool for Language Recognition.[1]
Inhaltsverzeichnis
Beschreibung
ANTLR unterstützt die Erzeugung von Parsern, Lexern und TreeParsern für LL(k)-Grammatiken mit beliebigen k. Der Übersetzer selbst ist in Java geschrieben, als Freie Software verfügbar und ist auf der Java-Plattform sowie auf .NET und Mono lauffähig.
Als Zielsprachen werden u. a. ActionScript, Ada95, C, C++, C#, Java, JavaScript, Objective-C, Perl und Python unterstützt[2]. Die von ANTLR ausgegebenen Code-Dateien benötigen Funktionen, die in einer Parser-Bibliothek (z.B. antlr.runtime.dll) zur Verfügung gestellt werden. Dabei können abstrakte Syntaxbäume und entsprechende TreeParser automatisiert erstellt werden.
Die von ANTLR benutzte Sprache ist eine Mischung aus formaler Grammatik und Elementen aus objektorientierten Sprachen.
Beispiel
Im folgenden Beispiel wird ein Parser in ANTLR beschrieben, der Summenausdrücke in der Form "1+2+3" erkennen kann:
// allgemeine Optionen, zum Beispiel die Zielsprache options { language = "CSharp"; } // es folgt der Parser class SumParser extends Parser; options { k = 1; // Parser-Lookahead: 1 Token } // Definition eines Ausdrucks statement : INTEGER (PLUS^ INTEGER)*; // hier der Lexer class SumLexer extends Lexer; options { k = 1; // Lexer-Lookahead: 1 Zeichen } PLUS : '+'; DIGIT : ('0'..'9'); INTEGER : (DIGIT)+;
Das folgende Listing demonstriert den Aufruf des Parsers in einem Programm:
TextReader reader; // (...) Textreader mit Zeichen füllen SumLexer lexer = new SumLexer(reader); SumParser parser = new SumParser(lexer); parser.expression();
Literatur
- Terence Parr: The Definitive ANTLR Reference Guide: Building Domain-Specific Languages. 1. Auflage. Pragmatic Programmers, 2007, ISBN 0978739256.
Weblinks
- http://www.antlr.org
- http://supportweb.cs.bham.ac.uk/docs/tutorials/docsystem/build/tutorials/antlr/antlr.html - kurzes Tutorial in ANTLRv2 (Java als Zielsprache)
- http://antlreclipse.sourceforge.net - Eclipse Plugin für antlr (Freie Software)
- http://www.placidsystems.com/articles/article-grammarlayout/grammarLayout.htm - ANTLR und Eclipse
Einzelnachweise
- ↑ Terence Parr: The Definitive ANTLR Reference. Building Domain-Specific Languages. The Pragmatic Bookshelf, 7. Mai 2007, ISBN 0-9787392-5-6, Preface, S. 15.
- ↑ http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets
Siehe auch
Kategorien:- Compilerbau
- Java-Programm
Wikimedia Foundation.