我试图在ANTLR3树语法(由ANTLR3生成的代码是TreeParser类)中获取行号。
谷歌只发现ANTLR2的解决方案,可悲的是不能在ANTLR3工作。
澄清我试图访问.g文件本身的行号。如何获取ANTLR3 TreeParser中的行号
我想我必须覆盖一个方法或扩展一个类,我只是不知道哪一个。
提前TNX
编辑:我要指出,我使用的Java API
我试图在ANTLR3树语法(由ANTLR3生成的代码是TreeParser类)中获取行号。
谷歌只发现ANTLR2的解决方案,可悲的是不能在ANTLR3工作。
澄清我试图访问.g文件本身的行号。如何获取ANTLR3 TreeParser中的行号
我想我必须覆盖一个方法或扩展一个类,我只是不知道哪一个。
提前TNX
编辑:我要指出,我使用的Java API
它似乎是我正在寻找路远。在.g文件中访问Tree Grammar中规则的行号只需要输入token.getLine(); (它是一个内部CommonTree)
所以例如
分配:ID '=' 表达式{INT线= $ ID.getLine()}; // $ ID的类型是CommonTree
的antlr3.Token类和子类antlr3.ClassicToken和antlr3.CommonToken
似乎提供a deprecated functiondef getLine ( self )
和成员line
。
我不知道你如何使用antlr3.TreeParser,但我想你有权访问令牌。
[我如何在ANTLR3中制作TreeParser](http://stackoverflow.com/questions/2061166/how-do-i-make-a-treeparser-in-antlr3) ant [ANTLR3教程](http://jnb.ociweb.com/jnb/jnbJun2008.html)可能会对您有所帮助。 – 2011-01-07 23:17:31
丹尼,你可以发布链接到v2代码吗? – 2011-01-08 07:49:01
@bart Kiers将是:http://antlraux.sourceforge.net/为图书馆和http://tech.puredanger.com/2007/02/01/recovering-line-and-column-numbers-in- your-antlr-ast /代码希望这可以帮助 – danny 2011-01-08 13:18:01