我正在尝试获取ANTLR3树语法中的行号(由ANTLR3生成的代码属于TreeParser类)。
Google只能找到适用于ANTLR2的解决方案,而这些解决方案在ANTLR3中不起作用。
为了澄清,我正在尝试访问.g文件本身中的行号。
我认为我必须重写一个方法或扩展一个类,只是不知道该选择哪一个。
提前感谢您的帮助。
编辑:我应该指出我正在使用Java API。
我认为我必须重写一个方法或扩展一个类,只是不知道该选择哪一个。
提前感谢您的帮助。
编辑:我应该指出我正在使用Java API。
看来我一直在搜索一个太远的东西。在.g文件中访问Tree语法规则的行号,只需请求token.getLine(); (它在内部是CommonTree)。
例如:
assign: ID '=' expression {int line = $ID.getLine()}; // $ID是CommonTree类型
antlr3.Token类和其子类antlr3.ClassicToken和antlr3.CommonToken
似乎提供了一个已弃用的函数def getLine(self)和一个成员变量line
。
我不知道您如何使用antlr3.TreeParser,但我想您可以访问这些标记。