1

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

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

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

4

1 回答 1

2

从 ANTLR 4.1 开始,在运行时没有对此的直接支持。此外,解析树旨在始终在特定语法的上下文中有效;如果您从HIDDEN通道上最初的令牌中添加节点,您将破坏此不变量。

ParseTreeProperty<T>您应该通过为您正在使用的每个属性定义一个实例并为特定ParseTree实例分配属性值来将附加信息附加到解析树节点,而不是修改解析树本身。

于 2013-11-13T00:32:43.163 回答