Wie kann ich einen AST mit ANTLR4 erstellen? [Duplikat]

8

Ich habe eine ANTLR3-Grammatik, die einen abstrakten Syntaxbaum erstellt. Ich überarbeite ein Upgrade auf ANTLR4. Es scheint jedoch, dass ANTLR4 nur Syntaxbäume und keine abstrakten Syntaxbäume erstellt. Zum Beispiel wird die Option output=AST nicht mehr erkannt. Außerdem erscheint weder "AST" noch "abstrakte Syntax" im Text von "Die endgültige ANTLR4-Referenz" .

Ich frage mich, ob ich etwas verpasse.

Meine Anwendung weiß derzeit, wie sie über den von ANTLR3 erzeugten AST kriechen kann. Es ist nicht unmöglich, es zu ändern, um einen Parse-Baum zu verarbeiten, aber es wird ein bisschen Arbeit sein. Ich möchte sicher sein, dass es notwendig ist, bevor ich die Straße hinuntergehe.

    
Peter C. Chapin 04.04.2013, 23:15
quelle

1 Antwort

7

ANTLR 4 erzeugt Syntaxbäume basierend auf der Grammatik anstelle von ASTs basierend auf beliebigen AST-Operatoren und / oder Umschreibungsregeln. Dadurch kann ANTLR 4 Listener und Besucherschnittstellen automatisch erzeugen, die Sie mithilfe Ihrer Grammatik im Code implementieren können.

Die Änderung kann für Benutzer, die bestehende Anwendungen von Version 3 aktualisieren, dramatisch sein, aber als Ganzes ist das neue System viel einfacher zu verwenden und (insbesondere) zu warten.

    
Sam Harwell 04.04.2013 23:48
quelle

Tags und Links