Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何使用Happy获得漂亮的语法错误消息?_Haskell_Happy - Fatal编程技术网

Haskell 如何使用Happy获得漂亮的语法错误消息?

Haskell 如何使用Happy获得漂亮的语法错误消息?,haskell,happy,Haskell,Happy,我目前正在玩happy解析器生成器 其他解析器生成器可以提供类似“意外的结束行,预期为'then'”这样的好消息。 使用happy,我只获得当前标记和错误的位置 你能给我一个如何获取上述错误消息的示例吗?一般来说,据我所知,如果你想要好的解析器错误,请使用而不是Happy。我为此编写了一个Happy特性 请参阅我的博客帖子: 它已合并到此拉取请求中。您可以为每个产品添加额外的右侧,以捕获已知错误。确保始终在末尾添加它们,否则会打乱语法的优先级。由于Happy的工作方式,通常不可能这样做-它是一个

我目前正在玩happy解析器生成器

其他解析器生成器可以提供类似“意外的结束行,预期为'then'”这样的好消息。 使用happy,我只获得当前标记和错误的位置


你能给我一个如何获取上述错误消息的示例吗?

一般来说,据我所知,如果你想要好的解析器错误,请使用而不是Happy。

我为此编写了一个Happy特性

请参阅我的博客帖子:


它已合并到此拉取请求中。

您可以为每个产品添加额外的右侧,以捕获已知错误。确保始终在末尾添加它们,否则会打乱语法的优先级。由于Happy的工作方式,通常不可能这样做-它是一个传统的基于LALR(1)表的解析器,生成错误所需的信息在运行时不容易获得。我现在尝试了Parsec,但语法的定义与happy相比非常冗长,而且也很难阅读。但它确实给出了我想要的那种错误消息。这最终在Happy 1.19.7中发布。谢谢顺便说一句,这是。(我自己的最新版本的Happy文档)