在ANTLR4中遍历解析树时,处理错误的惯用方法是什么?

时间:2013-04-11 23:01:16

标签: java error-handling antlr4

我刚刚开始使用ANTLR4,我正在创建一个遍历解析树的侦听器。我还有一个自定义错误监听器添加了Parser实例;基于此,我希望在调用ParseTreeWalker.walk()期间我报告的任何错误也会转到解析器的错误侦听器。我发现我可以打电话给Parser.getErrorListeners()并将它注入我的听众课程,但我希望能有更多的东西。

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

1 个答案:

答案 0 :(得分:2)

您可以拨打Parser.notifyErrorListeners

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