改善Grako生成的解析器输出的错误

时间:2016-07-19 20:57:11

标签: parsing grako

我试图找出改进Grako生成的解析器用户显示的错误的最佳方法。看起来Grako生成的解析器在输入文件中遇到某些解析问题时显示的默认解析错误是没有用的。当真正的错误在某个不同的地方时,错误通常似乎意味着问题出现在输入文件的一部分中。

我一直在研究Grako Semantics类,进行一些检查,如果检查失败会显示更好的错误消息,但似乎还有大量边缘情况必须指定才能够捕获解析规则可能失败的所有可能方法。

有人可以查看任何建议或示例吗?

1 个答案:

答案 0 :(得分:2)

PEG解析器将耗尽所有选项,有时会使您失败,对应于最后一个,最不可能的选项。

使用Grako,您可以将 cut 元素(~)添加到语法中,以便在可以确定它们是匹配的选项时让解析器提交某些选项。

term = '(' ~ expression ')' | int ; 

剪切元素也会修剪memoization缓存,从而提高解析器的性能。