0

我试图找出改善向 Grako 生成的解析器用户显示的错误的最佳方法。Grako 生成的解析器在遇到输入文件中的某些解析问题时显示的默认解析错误似乎没有帮助。当真正的错误在不同的地方时,这些错误通常似乎暗示问题出在输入文件的一部分中。

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

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

4

1 回答 1

2

PEG 解析器会耗尽所有选项,有时会让您陷入与最后一个也是最不可能的选项相对应的故障。

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

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

剪切元素还会修剪记忆缓存,从而提高解析器性能。

于 2016-07-21T21:47:30.847 回答