如何在ANTLR4中修改解析树?

如何在ANTLR4中修改解析树?,antlr4,Antlr4,我使用ANTLR4编写Fortran解析。现在我得到了解析树(ANTLR4中没有AST)。我的下一步工作是根据需要修改解析树,例如插入新的数据声明语句和替换当前语句。我在ANTLR java API文档中查找了addChild,但在RuleNode中似乎没有这样的方法。那么我该怎么办呢?一种方法是将代码嵌入语法文件中。这让事情变得一团糟 另一种方法是在单独的文件中编写类,在规则的@parser::members{…}部分或操作部分中创建所需的对象,并使用它们从语法中获取详细信息。这样,您将从语法

我使用ANTLR4编写Fortran解析。现在我得到了解析树(ANTLR4中没有AST)。我的下一步工作是根据需要修改解析树,例如插入新的数据声明语句和替换当前语句。我在ANTLR java API文档中查找了
addChild
,但在
RuleNode
中似乎没有这样的方法。那么我该怎么办呢?

一种方法是将代码嵌入语法文件中。这让事情变得一团糟

另一种方法是在单独的文件中编写类,在规则的
@parser::members{…}
部分或操作部分中创建所需的对象,并使用它们从语法中获取详细信息。这样,您将从语法中获得信息,并且可以使用类对数据进行建模


祝你好运

我刚刚发现我应该查找
parserulecontext
,它实现了接口
parsertree
。其中,
RuleNode
只是
ParseTree
的子接口。