在 rascal 中,当我的 DSL 出现解析错误时,我如何能够详细说明可能导致语法/解析错误的原因,因为
ParseError
异常仅包含文件中问题的位置?任何资源都很有价值,谢谢。
这是一个很好的功能,一个可解释的解析错误。
我们正在开发一个具有错误恢复功能的分支。即使出现错误,错误恢复也会继续解析。生成的解析树将是完整的(它具有所有字符),但也是部分的(某些部分不会被语法识别)。我不知道这件事什么时候能完成。这是一个副业项目。
从这样一个恢复的树中,可以比我们现在更好地解释解析错误。
尽管如此,没有比反事实观察更好的解释了。因此,通常对解析错误的最佳解释是替代输入句子,该句子相似但不同,足以成功。因此,最好建议用户尝试一下扔掉光标周围的内容(可能在上一行),看看会发生什么。