gpt4 book ai didi

java - 捕获 ANTLR 中的错​​误并查找父级

转载 作者:行者123 更新时间:2023-11-30 05:07:19 25 4
gpt4 key购买 nike

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

例如。如果我有语法:编程:统计表达式;统计:字符串;表达式:整数;

并为其输入“abc def”。

然后我会在“def”处收到一个错误,它应该是一个整数。此时,我想要获取父级“expr”(因为它在 INTEGER 部分内失败)和它的父级“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 错误的规则中添加异常捕获,然后关闭其他规则的默认捕获。

使用

@rulecatch { catch (RecognitionException re) { 抛出 re; }}

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

关于java - 捕获 ANTLR 中的错​​误并查找父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4627244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com