首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rascal:语法堆栈跟踪

Rascal:语法堆栈跟踪
EN

Stack Overflow用户
提问于 2020-02-11 18:23:03
回答 1查看 44关注 0票数 1

当使用特定语法解析文件时,如果解析失败,我会得到一条相应的错误消息,其中包含源文件中违反语法的位置。

在这些情况下,我想要查看的是此时处于活动状态的语法规则的列表,类似于语法规则“堆栈跟踪”,或者到目前为止已经匹配的规则。这在Rascal中是可能的吗?

因此,对于一个非常简单的示例,使用文档中的EXP语言,如果我尝试解析"2 + foo“,我可以得到如下内容

代码语言:javascript
复制
Exp
=> left Exp "+" Exp
=> left IntegerLiteral "+" Exp
=> left IntegerLiteral "+" <?>
No derivation of "foo" from rule 'Exp'

另一种说法是查看不完整的解析树,因为它是解析错误发生的时刻。这有意义吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-11 21:13:41

这完全有道理,但我担心这个“不完整的解析树”特性在我们的待办事项列表中。

注意,对于非确定性解析算法,它可能会返回一组当前的解析上下文,因此是一个“解析森林”,而不是一个堆栈跟踪。不过,我认为这将是一个非常有用的调试功能。

现在我能做的唯一的建议是“增量调试”,所以删除一半的输入并检查解析错误是否仍然存在,然后另一半,清洗/洗涤/重复。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60166685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档