问题标签 [happy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
154 浏览

haskell - 用 Happy 解析 switch 语句

所以,我正在尝试解析包含这样的 switch 语句的代码

但我不断得到:

当我运行生成的解析器时。这里奇怪的是它在“case”关键字的第二个实例上失败,但不是第一个。为什么会这样?

0 投票
2 回答
313 浏览

parsing - 语法歧义:为什么?(问题是:“(a)”与“(az)”)

所以我试图为单行语句实现一个非常简单的语法:

我正在使用 Happy 解析器生成器 (http://www.haskell.org/happy/) 但由于某种原因似乎存在一些歧义问题。

错误消息是:“移位/减少冲突:1”

我认为歧义在于这两行:

一个例子是:“(a)”与“(az)”

对于这两种情况,词法分析器会给出以下信息:

我不明白的是,这对于 LL[2] 解析器来说是如何模棱两可的。

如果这里有帮助的话,那就是整个 Happy 语法定义:

谢谢!

0 投票
5 回答
5029 浏览

parsing - 与使用解析器组合器相比,使用快乐之类的解析器生成器有什么优势?

要学习如何编写和解析上下文无关语法,我想选择一个工具。对于 Haskell,有两个大选项:Happy,它从语法描述生成解析器和 *Parsec,它允许您直接在 Haskell 中编写解析器。

两种方法的(缺点)优点是什么?

0 投票
1 回答
150 浏览

haskell - Happy 中的 %% 是什么?

我正在用 Happy 构建一个解析器,并注意到这是在线文档

像 yacc 一样,我们在此处包含 %%,没有任何实际原因。

%%

一定是有原因的,即使是微不足道的。有谁知道它是什么?

0 投票
1 回答
407 浏览

parsing - 覆盖“内部快乐错误” - notHappyAtAll

我正在使用 Happy 来生成解析器。

我发现,当我给它在比顶层更低级别匹配部分语法的标记时(例如给它自己的表达式,这不是语句的一部分),我得到一个“内部快乐错误”而不是解析错误。

有没有办法覆盖notHappyAtAll,以便我可以打印比“内部快乐错误”更好的错误消息?显然,除了更改自动生成的解析器文件,因为我每次更新语法时都必须这样做。

0 投票
0 回答
425 浏览

parsing - Happy 解析器中令人费解的错误消息

我正在使用Happy在 Haskell 中构建一个 JavaScript 解析器,我遇到了一条错误消息,无论我多么努力,我都无法调试。

我不能在这里发布所有代码,因为它有数千行。我会尝试发布相关的内容,如果有人可以帮助我,我将不胜感激!

此错误消息很长,请多多包涵。我遗漏了大部分内容HappyAbsSyn。如果有帮助,我可以提供完整的错误消息。

了解?好的,所以我做的第一件事是查看 Parser.hs 中的第 800 行(Happy 生成的文件)。

action_90定义为:

除非我们了解代码对应的内容,否则这显然没有多大意义。我在编译时要求 Happy 生成一个信息文件,这是(我认为)适当的部分:

所以看起来这与 ID 声明有关。在这一点上,我真的很困惑。有人对我应该从这里去哪里有任何建议吗?我猜要解决这个问题,您需要查看抽象语法。这里有一点。同样,如果有帮助,我很乐意展示更多内容。

对不起,这么长。我在我的智慧在这里结束。任何帮助或指示都会很棒。

0 投票
2 回答
435 浏览

javascript - 如何匹配快乐解析器中的正则表达式?

我正在用Happy编写一个 JavaScript 解析器,我需要匹配一个正则表达式。我不想完全解析正则表达式,只需将其存储为字符串。

我的 AST 的相关部分如下所示:

这是相关的快乐代码:

我的问题是,我应该如何定义我的regex非终端?这种结构对吗?

0 投票
1 回答
1295 浏览

haskell - 转移/减少快乐中的冲突

如何制定正确的规则来解析 if-then[-else] 案例?这是一些语法:

此语法正确解析以下表达式:

但是编译会引发有关移位/减少冲突的警告。快乐的文档包含此类冲突的示例: http ://www.haskell.org/happy/doc/html/sec-conflict-tips.html

显示了两种解决方案,第一种是更改递归类型(在这种情况下不清楚如何做)。第二个是不改变任何东西。这个选项对我来说没问题,但我需要咨询。

0 投票
1 回答
1129 浏览

haskell - 快乐:减少/减少冲突

为什么这会引发有关减少/减少冲突的警告

但接下来可以吗?

0 投票
4 回答
420 浏览

java - 如何在 Haskell 中为 Java 制作语法高亮?

很快,我将被迫在 Haskell 中展示一个项目,该项目旨在突出显示 Java 语法。我做了一些研究,发现 Happy 可能是一个解决方案(因为它是一个类似 yacc 的解析器)。还提到了 Bison 和 Parsec。由于我是 Haskell 的新手,我真的不知道如何开始这个项目。任何提示都会有很大帮助。

谢谢!