2011-01-07 47 views
3

我试图在ANTLR3树语法(由ANTLR3生成的代码是TreeParser类)中获取行号。
谷歌只发现ANTLR2的解决方案,可悲的是不能在ANTLR3工作。
澄清我试图访问.g文件本身的行号。如何获取ANTLR3 TreeParser中的行号

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

提前TNX

编辑:我要指出,我使用的Java API

+0

[我如何在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

+0

丹尼,你可以发布链接到v2代码吗? – 2011-01-08 07:49:01

+0

@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

回答

3

它似乎是我正在寻找路远。在.g文件中访问Tree Grammar中规则的行号只需要输入token.getLine(); (它是一个内部CommonTree)

所以例如

分配:ID '=' 表达式{INT线= $ ID.getLine()}; // $ ID的类型是CommonTree