我生成了一个像这样的解析树:
afs = new AntlrFileStream(fn);
lexer = new Verilog2001Lexer(afs);
cts = new CommonTokenStream(lexer);
parser = new Verilog2001Parser(cts);
tree = parser.source_text();
我想在HIDDEN频道中从令牌创建新节点,并将它们添加到解析树中。所以我想问一下如何从令牌创建新节点?那么我如何将它们添加到解析树中的所需位置?我一直在查看IParseTree接口和Context对象,但我还没有弄明白。
答案 0 :(得分:1)
从ANTLR 4.1开始,在运行时没有直接支持。此外,解析树旨在始终在特定语法的上下文中有效;如果您从最初在HIDDEN
频道上的令牌添加节点,则会破坏此不变量。
不应修改解析树本身,而应通过为正在使用的每个属性定义ParseTreeProperty<T>
实例,将附加信息附加到解析树节点,并为特定ParseTree
分配属性值实例