我正在尝试在ANTLR3树语法中获取行号(ANTLR3生成的代码属于TreeParser类)。
谷歌只找到了ANTLR2的解决方案,这在ANTLR3中无法使用
澄清我试图访问.g文件本身的行号。
我认为我必须覆盖一个方法或扩展一个类,我只是不知道哪一个。
提前预订
编辑:我应该指出我正在使用java api
答案 0 :(得分:3)
看起来我正在寻找远方。要在.g文件中访问Tree Grammar中规则的行号,只需要求token.getLine(); (内部是CommonTree)
所以例如
assign:ID'='expression {int line = $ ID.getLine()}; // $ ID的类型为CommonTree
答案 1 :(得分:1)
antlr3.Token类和子类antlr3.ClassicToken和antlr3.CommonToken
似乎提供a deprecated function def getLine ( self )
和成员line
。
我不知道您如何使用antlr3.TreeParser,但我想您可以访问令牌。