2013-04-04 14 views
8

Mam gramatyki ANTLR3 że buduje drzewo składniowe. Szukam uaktualnienia do ANTLR4. Jednak wygląda na to, że ANTLR4 buduje tylko parsowanie drzew, a nie abstrakcyjnych drzew składniowych. Na przykład opcja output=AST nie jest już rozpoznawana. Ponadto ani "AST" ani "abstrakcyjna składnia" pojawia się w tekście "Ostateczne odniesienie ANTLR4".Jak mogę zbudować AST za pomocą ANTLR4?

Zastanawiam się, czy ja czegoś brakuje.

Moja aplikacja obecnie umie pełzać nad AST produkowanego przez ANTLR3. Zmiana go w celu przetworzenia drzewa parsowania nie jest niemożliwa, ale będzie to trochę pracy. Chcę się upewnić, czy to konieczne, zanim zacznę tę drogę.

+0

To pytanie zostało w końcu odpowiedział na http://stackoverflow.com/questions/29971097/how-to-create-ast-with-antlr4 – James

Odpowiedz

7

ANTLR 4 produkuje drzewo wyprowadzenia na podstawie gramatyki zamiast ASTs na podstawie dowolnych operatorów AST i/lub przepisać reguł. Dzięki temu ANTLR 4 może automatycznie tworzyć interfejsy słuchacza i użytkownika, które można zaimplementować w kodzie przy użyciu gramatyki.

Zmiany mogą być dramatyczne dla użytkowników aktualizujących istniejących aplikacji z wersji 3, ale jako całość nowy system jest znacznie łatwiejszy w obsłudze i (zwłaszcza) utrzymaniu.

+0

Dzięki. Rozumiem zalety nowego systemu, dlatego chciałbym go uaktualnić. Jestem gotów zrobić to, co jest konieczne, aby to się stało. Chciałem tylko mieć pewność, że rozumiem sytuację przed podjęciem tego wysiłku. Brzmi jak ja. –

+0

Czy mogę wziąć 'ParserRuleContext' jako węzeł AST? – jiamo

Powiązane problemy