如何获取 ANTLR3 TreeParser 中的行号
我正在尝试获取 ANTLR3 树语法中的行号(ANTLR3 生成的代码属于 TreeParser 类)。
谷歌只找到了 ANTLR2 的解决方案,遗憾的是在 ANTLR3 中不起作用。
为了澄清我正在尝试访问 .g 文件本身中的行号。
我想我必须覆盖一个方法或扩展一个类,我只是不知道是哪一个。
提前 tnx
编辑:我应该指出我正在使用 java api
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
antlr3.Token 类及其子类 antlr3.ClassicToken 和 antlr3.CommonToken
似乎提供已弃用的函数
def getLine ( self )< /code> 和成员
line
。我不知道你如何使用 antlr3.TreeParser,但我想你有访问令牌。
The antlr3.Token class and the subclasses antlr3.ClassicToken and antlr3.CommonToken
seem to provide a deprecated function
def getLine ( self )
and a memberline
.I have no idea how you are using antlr3.TreeParser, but I suppose you have access to the tokens.
看来我正在寻找很远的地方。要在 .g 文件中访问树语法中规则的行号,只需询问 token.getLine(); (它内部是一个 CommonTree)
因此例如
分配: ID '=' 表达式 {int line = $ID.getLine()}; // $ID 的类型为 CommonTree
it would appear that i was searching way to far. to access the line number of a rule in Tree Grammar while in the .g file simply ask for token.getLine(); (it is a CommonTree internally)
so for example
assign: ID '=' expression {int line = $ID.getLine()}; // $ID is of type CommonTree