我刚刚开始使用ANTLR4,我正在创建一个遍历解析树的侦听器。我还有一个自定义错误监听器添加了Parser
实例;基于此,我希望在调用ParseTreeWalker.walk()
期间我报告的任何错误也会转到解析器的错误侦听器。我发现我可以打电话给Parser.getErrorListeners()
并将它注入我的听众课程,但我希望能有更多的东西。
当我在这里时,我需要一种在报告错误时确定给定节点的行和列号的方法。在报告听众或访问者发现的错误时,每个人都会自己动手吗?
答案 0 :(得分:2)
您可以拨打Parser.notifyErrorListeners
。
通过拨打Token.getLine()
和Token.getCharPositionInLine()
可以获得行号和列号。您可以通过调用Token
来检索与解析树中任何TerminalNode
关联的TerminalNode.getSymbol()
实例。