Я использовал ANTLR4 для написания синтаксического анализа Fortran. Теперь я получаю дерево разбора (в ANTLR4 нет AST). Моя следующая работа — изменить дерево синтаксического анализа в соответствии с моими потребностями, например, вставить новые операторы объявления данных и заменить текущий оператор. Я искал addChild
в документах ANTLR java API, но, похоже, такого метода нет в RuleNode
. И что я должен делать?
Как изменить дерево синтаксического анализа в ANTLR4?
Ответы (1)
Один из способов — встроить свой код в файл грамматики. Это делает вещи очень грязными.
Другой способ — записать свои классы в отдельный файл, создать необходимые объекты в разделе @parser::members{...}
или в части действия ваших правил и использовать их для получения деталей из грамматики. Таким образом, вы получите информацию из грамматики и сможете моделировать свои данные с помощью своих классов.
Удачи!
person
Lallu Anthoor
schedule
01.05.2014
ParserRuleContext
, который реализует интерфейсParseTree
. ГдеRuleNode
— это просто субинтерфейсParseTree
. - person Li Dong   schedule 13.07.2013