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.
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.
Tags und Links abstract-syntax-tree antlr4