【发布时间】:2012-01-20 06:39:30
【问题描述】:
我正在使用 Happy 来生成解析器。
我发现,当我给它匹配部分语法的标记低于顶层时(例如给它自己的表达式,这不是语句的一部分),我得到一个“内部快乐错误”而不是解析错误。
有没有办法覆盖notHappyAtAll,以便我可以打印比“内部快乐错误”更好的错误消息?显然,除了每次更新语法时都必须更改自动生成的解析器文件。
【问题讨论】:
-
也许the happy docs 帮助?免责声明:也许他们没有。
-
如果您想匹配“片段”而不是始终匹配语法的顶级,则需要多个开始符号 - 请参阅 Happy 手册的第 2.7 节。
-
您是否在语法顶部定义了错误指令?这应该是
%error { parseError }的形式 -parseError是一些用户定义的函数。参见手册第 2 章。 -
是的,我已经定义了一个 parseError - 由于某种原因,我的解析错误没有捕捉到它,而是调用
notHappyAtAll:/ -
这个问题对于非 Haskeller 的人来说一定很奇怪;)
notHappyAtAll是一个函数的好名字。
标签: parsing haskell error-handling happy