Haskell 如何使用Happy获得漂亮的语法错误消息?
我目前正在玩happy解析器生成器 其他解析器生成器可以提供类似“意外的结束行,预期为'then'”这样的好消息。 使用happy,我只获得当前标记和错误的位置Haskell 如何使用Happy获得漂亮的语法错误消息?,haskell,happy,Haskell,Happy,我目前正在玩happy解析器生成器 其他解析器生成器可以提供类似“意外的结束行,预期为'then'”这样的好消息。 使用happy,我只获得当前标记和错误的位置 你能给我一个如何获取上述错误消息的示例吗?一般来说,据我所知,如果你想要好的解析器错误,请使用而不是Happy。我为此编写了一个Happy特性 请参阅我的博客帖子: 它已合并到此拉取请求中。您可以为每个产品添加额外的右侧,以捕获已知错误。确保始终在末尾添加它们,否则会打乱语法的优先级。由于Happy的工作方式,通常不可能这样做-它是一个
你能给我一个如何获取上述错误消息的示例吗?一般来说,据我所知,如果你想要好的解析器错误,请使用而不是Happy。我为此编写了一个Happy特性 请参阅我的博客帖子:
它已合并到此拉取请求中。您可以为每个产品添加额外的右侧,以捕获已知错误。确保始终在末尾添加它们,否则会打乱语法的优先级。由于Happy的工作方式,通常不可能这样做-它是一个传统的基于LALR(1)表的解析器,生成错误所需的信息在运行时不容易获得。我现在尝试了Parsec,但语法的定义与happy相比非常冗长,而且也很难阅读。但它确实给出了我想要的那种错误消息。这最终在Happy 1.19.7中发布。谢谢顺便说一句,这是。(我自己的最新版本的Happy文档)