Die Grammatiken für den Parser werden in einer Art Backus Naur Form in *.g Files geschrieben. Wie diese Statements in dem *.g File aussehen kann man in dem folgenden kleinen Beispiel sehen:
variableDeclaration : type ident ';'
type : 'int' | 'String';
ident : ('a'...'z' | 'A'...'Z' | '0'...'9' | '_' ) ( 'a'...'z' | 'A'...'Z' |'0'...'9' | '_' )*;
Innerhalb solcher Rules, wie es z.B. variableDeclaration ist, kann mittels Actions in der Sprache die als Zielsprache gewählt wird, normaler Code eingewoben werden und auf die Werte der Tokens zugegriffen werden.
Antlr bietet des Weiteren die Möglichkeit die geparsten Informationen in einem AST (abstract syntax tree) zu speichern und sich wiederum mittels einer Grammatik ein TreeWalker generieren zu lassen. Diese Feature habe ich leider bis dato noch nicht getestet aber es hört sich vielversprechend an.
Ein Tipp für alle die die ihre geparsten Daten in ein Modell packen wollen ist mittels den Actions in der Grammatik sich ein EMF Modell zu füllen. Wenn man sich ein Metamodell mittels EMF erstellt und sich die Implementierung durch Generierung der Java-Klassen erstellen lässt kann man einfach und elegant mit den Actions in der Grammatik die Daten in ein Modell füllen und weiterverarbeiten. ;)
Also einfach mal probieren und mit Antlr sowie EMF herumspielen.
Have a lot of fun!