如何获取ANTLR3 TreeParser中的行号

时间:2011-01-07 21:49:32

标签: java antlr antlr3

我正在尝试在ANTLR3树语法中获取行号(ANTLR3生成的代码属于TreeParser类)。
谷歌只找到了ANTLR2的解决方案,这在ANTLR3中无法使用 澄清我试图访问.g文件本身的行号。

我认为我必须覆盖一个方法或扩展一个类,我只是不知道哪一个。

提前预订

编辑:我应该指出我正在使用java api

2 个答案:

答案 0 :(得分:3)

看起来我正在寻找远方。要在.g文件中访问Tree Grammar中规则的行号,只需要求token.getLine(); (内部是CommonTree)

所以例如

assign:ID'='expression {int line = $ ID.getLine()}; // $ ID的类型为CommonTree

答案 1 :(得分:1)

antlr3.Token类和子类antlr3.ClassicTokenantlr3.CommonToken
似乎提供a deprecated function def getLine ( self )和成员line

我不知道您如何使用antlr3.TreeParser,但我想您可以访问令牌。