Parsing 添加到现有antlr树

Parsing 添加到现有antlr树,parsing,tree,antlr,antlr4,Parsing,Tree,Antlr,Antlr4,我生成了一个解析树,如下所示: afs = new AntlrFileStream(fn); lexer = new Verilog2001Lexer(afs); cts = new CommonTokenStream(lexer); parser = new Verilog2001Parser(cts); tree = parser.source_text(); 我想从隐藏通道中的令牌创建新节点,并将它们添加到解析树中。所以我想问一下,如何从令牌创建新节点?那么如何将它们添加到解析树中所需的

我生成了一个解析树,如下所示:

afs = new AntlrFileStream(fn);
lexer = new Verilog2001Lexer(afs);
cts = new CommonTokenStream(lexer);
parser = new Verilog2001Parser(cts);
tree = parser.source_text();

我想从隐藏通道中的令牌创建新节点,并将它们添加到解析树中。所以我想问一下,如何从令牌创建新节点?那么如何将它们添加到解析树中所需的位置?我一直在研究IParseTree接口和上下文对象,但还没有弄清楚它。

从ANTLR 4.1开始,在运行时没有对此的直接支持。此外,解析树在特定语法的上下文中总是有效的;如果从
HIDDEN
通道上的原始标记向其添加节点,则会破坏此不变量


与其修改解析树本身,不如通过为正在使用的每个属性定义一个实例,将附加信息附加到解析树节点上,并为特定的
ParseTree
实例分配属性值。

从ANTLR 4.1开始,在运行时中对此没有直接支持。此外,解析树在特定语法的上下文中总是有效的;如果从
HIDDEN
通道上的原始标记向其添加节点,则会破坏此不变量


与其修改解析树本身,不如通过为正在使用的每个属性定义一个实例,将附加信息附加到解析树节点,并为特定的
ParseTree
实例指定属性值。

显示以下内容是否接近您的想法:ParseTreeProperty WS=new ParseTreeProperty();放置(节点,);显示以下内容将近似于您的想法:ParseTreeProperty WS=new ParseTreeProperty();放置(节点,);