3

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

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

tnx 提前

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

4

2 回答 2

3

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

所以例如

赋值:ID '=' 表达式 {int line = $ID.getLine()}; // $ID 是 CommonTree 类型

于 2011-01-08T00:25:52.737 回答
1

antlr3.Token类和子类antlr3.ClassicTokenantlr3.CommonToken 似乎提供了一个不推荐使用的函数和一个成员。
def getLine ( self )line

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

于 2011-01-07T23:11:15.490 回答