添加到现有的antlr树

时间:2013-11-12 23:43:33

标签: parsing tree antlr antlr4

我生成了一个像这样的解析树:

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

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

1 个答案:

答案 0 :(得分:1)

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

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