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

Java 什么';在ANTLR4中遍历解析树时处理错误的惯用方法是什么?,java,error-handling,antlr4,Java,Error Handling,Antlr4,我刚刚开始使用ANTLR4,正在创建一个遍历解析树的侦听器。我还添加了一个自定义错误监听器解析器实例;在此基础上,我希望调用ParseTreeWalker.walk()时报告的所有错误也转到解析器的错误侦听器。我突然想到,我可以调用Parser.getErrorListeners()并将其注入到我的listener类中,但我希望能有更多的东西 在报告错误时,我需要一种方法来确定给定节点的行数和列数。在报告听众或访问者发现的错误时,是否每个人都有自己的想法?你可以打电话 通过调用Token.get

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

在报告错误时,我需要一种方法来确定给定节点的行数和列数。在报告听众或访问者发现的错误时,是否每个人都有自己的想法?

你可以打电话


通过调用
Token.getLine()
Token.getCharPositionInLine()
可以获得行号和列号。您可以通过调用
TerminalNode.getSymbol()

来检索与解析树中任何
TerminalNode
关联的
令牌
实例,这非常有用。那么,是否假设侦听器在遍历树之前存储对解析器的引用呢?
ParseTree
本身没有保存对解析器的引用,是吗?我认为还没有一个既定的惯例。