【发布时间】:2020-02-11 10:23:03
【问题描述】:
当使用特定语法解析文件并且解析失败时,我会收到一条相应的错误消息,其中包含源文件中违反语法的位置。
在这些情况下,我想查看的是目前处于活动状态的语法规则列表,例如语法规则“堆栈跟踪”,或者到目前为止匹配的规则。 这在 Rascal 中可能吗?
因此,举一个非常简单的例子,在文档中的 EXP 语言中,如果我尝试解析“2 + foo”,我可能会得到类似
Exp
=> left Exp "+" Exp
=> left IntegerLiteral "+" Exp
=> left IntegerLiteral "+" <?>
No derivation of "foo" from rule 'Exp'
另一种说法是查看不完整的解析树,因为它是发生解析错误的那一刻。这有意义吗?
【问题讨论】: