Как изменить дерево синтаксического анализа в ANTLR4?

Я использовал ANTLR4 для написания синтаксического анализа Fortran. Теперь я получаю дерево разбора (в ANTLR4 нет AST). Моя следующая работа — изменить дерево синтаксического анализа в соответствии с моими потребностями, например, вставить новые операторы объявления данных и заменить текущий оператор. Я искал addChild в документах ANTLR java API, но, похоже, такого метода нет в RuleNode. И что я должен делать?


person Li Dong    schedule 12.07.2013    source источник
comment
Я только что обнаружил, что должен искать ParserRuleContext, который реализует интерфейс ParseTree. Где RuleNode — это просто субинтерфейс ParseTree.   -  person Li Dong    schedule 13.07.2013


Ответы (1)


Один из способов — встроить свой код в файл грамматики. Это делает вещи очень грязными.

Другой способ — записать свои классы в отдельный файл, создать необходимые объекты в разделе @parser::members{...} или в части действия ваших правил и использовать их для получения деталей из грамматики. Таким образом, вы получите информацию из грамматики и сможете моделировать свои данные с помощью своих классов.

Удачи!

person Lallu Anthoor    schedule 01.05.2014