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.Beschreibung
ANTLR unterstützt die Erzeugung von Parsern, Lexern und TreeParser für LL(k)-Grammatiken mit beliebigen k. Der Übersetzer selbst ist in Java geschrieben, als Open Source verfügbar und ist auf der Java-Plattform sowie auf .NET und Mono lauffähig.
Als Zielsprachen werden C++, C#, Java und Python unterstützt. 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;
}
// Definition eines Ausdrucks
statement : INTEGER (PLUS^ INTEGER)*;
// hier der Lexer
class SumLexer extends Lexer;
options
{
k = 1;
}
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();
Weblinks
* http://www.antlr.org/
* http://supportweb.cs.bham.ac.uk/docs/tutorials/docsystem/build/tutorials/antlr/antlr.html - kurzes Tutorial in ANTLR (Java als Zielsprache)
* http://antlreclipse.sourceforge.net/ - Eclipse Plugin für antlr (Open Source)
* http://www.placidsystems.com/articles/article-grammarlayout/grammarLayout.htm - ANTLR und Eclipse

