2016-07-19 38 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緩存,這提高了解析器的性能。