2016-07-19 45 views
0

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

我一直在寻找Grako语义类来放入一些检查,如果检查失败会显示更好的错误消息,但它似乎也可能有大量的边缘案例,必须指定能够捕捉解析规则可能失败的所有可能方式。

有没有人有任何建议或例子,我可以查看?

+0

请参阅[本答案](http://stackoverflow.com/questions/29044806/do-i-have-a-bug-in-my-grammar-or-the-parser-generation-tool/29051357) – Apalala

回答

2

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

随着Grako,您可以添加元素(~)的语法有解析器承诺一定的选择,当可以肯定它们是匹配的。

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

剪切元素还修剪memoization缓存,这提高了解析器的性能。