Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 捕获ANTLR中的错误并查找父级_Java_Error Handling_Antlr - Fatal编程技术网

Java 捕获ANTLR中的错误并查找父级

Java 捕获ANTLR中的错误并查找父级,java,error-handling,antlr,Java,Error Handling,Antlr,我发现我可以通过覆盖displayRecognitionError在解析过程中捕获错误,但是如何找到此错误的父“节点” 如果我有语法: prog:statexpr; stat:STRING; expr:整数 并输入“abc def” 然后我将在“def”处得到一个错误,它应该是一个整数。在这一点上,我想得到父级,它是“expr”(因为它在整数部分中失败),它的父级是“prog”。有点像在java中打印堆栈跟踪 我试图查看从RecognitionException解析到displayRecogni

我发现我可以通过覆盖displayRecognitionError在解析过程中捕获错误,但是如何找到此错误的父“节点”

如果我有语法: prog:statexpr; stat:STRING; expr:整数

并输入“abc def”

然后我将在“def”处得到一个错误,它应该是一个整数。在这一点上,我想得到父级,它是“expr”(因为它在整数部分中失败),它的父级是“prog”。有点像在java中打印堆栈跟踪

我试图查看从RecognitionException解析到displayRecognitionError的节点,但它为null,并且使用CommonErrorNode父节点为null

我应该采取完全不同的方法吗?

CommonTree有:

/** Who is the parent node of this node; if null, implies node is root */
public CommonTree parent;
这就是你想要的吗

哦,你想要父母的规则。我要说的是,在需要的地方使用异常捕捉错误。在要捕获expr错误的规则中添加异常捕获,然后关闭其他规则的默认捕获

使用

@规则捕获{ catch(RecognitionException re){throw re;} }


然后在您想要捕获的规则中添加捕获。

我想捕获所有规则中的错误,那么我是否应该生成一个新的自定义异常,在每个规则中捕获它,添加该规则的名称并再次抛出它,直到它到达我自己的代码(我启动解析器的地方)?我该怎么做?