1

我刚刚开始使用 ANTLR4,并且正在创建一个遍历解析树的侦听器。我还有一个自定义错误侦听器添加了Parser实例;在此基础上,我希望在调用期间报告的任何错误ParseTreeWalker.walk()也转到解析器的错误侦听器。我突然想到我可以调用Parser.getErrorListeners()并将它注入到我的侦听器类中,但我希望有一些更成熟的东西。

当我这样做时,我需要一种在报告错误时确定给定节点的行号和列号的方法。在报告听众或访问者发现的错误时,每个人都会自己动手吗?

4

1 回答 1

2

你可以打电话Parser.notifyErrorListeners

行号和列号可通过调用Token.getLine()和获得Token.getCharPositionInLine()。您可以通过调用来检索与解析树中的Token任何关联的实例。TerminalNodeTerminalNode.getSymbol()

于 2013-04-12T14:18:50.787 回答