【问题标题】:Improving errors output by Grako-generated parser改进 Grako 生成的解析器输出的错误
【发布时间】:2016-07-22 05:47:30
【问题描述】:

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

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

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

【问题讨论】:

标签: parsing grako


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2011-03-09
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多