问题标签 [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 回答
106 浏览

parsing - 愉快地解决错误

在正则表达式中,我可以写:

这将匹配整个字符串,例如

我尝试使用 Happy 中的令牌流来模拟这一点。

但是Happy生成的解析器不识别

有没有办法解决这个问题/我做错了吗?

0 投票
1 回答
458 浏览

haskell - Alex、Happy、Cabal 和重新预处理

我正在使用 Alex 3.0.5、Happy 1.18.10、Cabal 1.16.0.2

我有一个使用 Cabal 构建的小型编译器项目。我将编译器的内部作为库公开,所以我在公开的模块部分有 MyLangLex 和 MyLangPar。如果我删除 Alex 和 Happy 生成的 .hs 文件,然后运行 ​​cabal configure,然后 cabal build 将首先运行 Alex 和 Happy,生成文件,然后继续构建,一切正常。但是,如果我不删除这些文件,Alex 和 Happy 要么不构建文件,要么没有将它们放在正确的位置。我觉得Happy跑了,因为我看到了Happy发来的信息;但是,当我查看应该生成的 .hs 文件时,它是不正确的(其中没有变化),我可以确定 .hs 文件的版本。Cabal 在构建中使用的 hs 文件是错误的,因为应该改变的行为没有。即对 .y 文件的更改没有合并到构建的程序中,所以我怀疑在运行 Happy 时,Cabal 将此文件放在某个临时目录中,然后使用旧的 .hs 文件,该文件仍然存在建造。但我不确定这一点。

是我的错误还是其中一种工具行为不端?

0 投票
1 回答
146 浏览

haskell - GLR_Lib.hs:找不到模块“系统”

我正在尝试从快乐中生成 GLR 解析器,但是一旦生成文件就会出错。

这是一个例子, ABC.y ,所以很清楚我在尝试什么:

这个例子适用于

但是,对 --glr 很满意,我无法构建结果。我想知道我是否做错了。准确地说,happy --glr 产生两个输出,ABC.hs。然而,ABCData.hs,

现在失败了。我得到的错误是找不到模块'System',它是haskell-98的隐藏成员......我尝试添加包haskell98,并得到了模棱两可的前奏问题。我还尝试将语法编码为 BNFC 并使用他们的 -glr 选项,但我仍然遇到其他错误,例如对显然已弃用的 Data.FiniteMap 的依赖。有没有办法得到这个编译?

0 投票
1 回答
273 浏览

haskell - “cabal install happy”导致内存溢出。(GHC 7.8.2)

在过去的几天里,我一直在努力让正确安装感到高兴,虽然我发现不仅要解决cabal install happy错误(通过安装happy-1.19apt-get添加/opt/happy/1.19.3/binPATH)具有挑战性,但现在它会贯穿源代码直到它到达ProduceCode(15 /18) 并且似乎进入了一个无限循环。Ctrl+C当整个系统变得无响应时,它会累积内存,直到我点击或关闭电源。

我想我记得这对 GHC-HEAD 根本不是问题,但我不想使用 head,因为它似乎每隔几天更新一次,需要我不断地重建我的包,除非我有什么技巧不知道从 迁移headhead+1

0 投票
1 回答
300 浏览

haskell - Haskell,没有 (Show ([String, Int)] -> Int 的实例

尝试在这里编译 Haskell.Happy 示例:http ://www.haskell.org/happy/doc/html/sec-using.html#sec-other-datatypes ,在生成 .hs 文件后,我得到了

错误,试图编译它,而示例的第一部分编译并运行良好

我究竟做错了什么?

编辑:完整的错误信息

我在跑

这条线是

可能重复的问题的答案是传递一个环境,但我怎么能在这里做到呢?

0 投票
2 回答
358 浏览

haskell - Haskell“让”实现

阅读 Haskell.Happy 文档并实现 'let' 运算符

文档说它是“一个接受变量值环境并返回表达式计算值的函数:”

无法理解语法的实际含义,这些构造在 Haskell 中是如何调用的?

编辑:我的意思是这些

0 投票
0 回答
73 浏览

parsing - 在 Happy with GLR 模式下启动符号

假设我定义了一个快乐的语法

如果我编译这个

我通常对具有非平凡歧义的语法感兴趣;然而,这个例子展示了让我感到困惑的一点。

我得到了一个 Haskell 解析器。只有当令牌流是 abba 或 b 时,我才会成功

然而,我对失败更感兴趣。我想很快失败,而且我似乎需要比我想象的更多的代币。

例如,如果我提供令牌流 a,a,a ... 到第三个 a 失败。如果我喂 bbb,则需要第三个 b 才能失败。为什么要额外的前瞻?匹配 f 时,一旦我看到两个 'a',语法中就没有什么可以匹配的了。

0 投票
1 回答
368 浏览

installation - GHC 不兼容通过 cabal 安装 haskell-src-exts

cabal install agda在 Ubuntu 14.04 上尝试使用 GHC 7.8.3 和 Cabal 1.16.0.2 时遇到了兼容性问题。

问题似乎出在haskell-src-exts-1.15.0.1Agda 需要的 . 编译该库会遇到以下众所周知的问题(我相信),这是由Happy生成的代码与版本 7.8 中对 GHC 的更改不兼容引起的。

上面提到的文章描述了如何清理和重建包含不兼容的 Happy 生成代码的库。但是,我无法为 haskell-src-exts-1.15.0.1 完成这项工作。特别是,尝试

遇到同样的问题。

有什么建议么?

0 投票
1 回答
295 浏览

parsing - Wrong operator precedence with Happy

Exploring parsing libraries in Haskell I came across this project: haskell-parser-examples. Running some examples I found a problem with the operator precedence. It works fine when using Parsec:

But not with Happy/Alex:

Even though the operator precedence seems well-defined. Excerpt from the parser:

Any hint? (I opened a bug report some time ago, but no response).

[Using gch 7.6.3, alex 3.1.3, happy 1.19.4]

0 投票
1 回答
149 浏览

haskell - 省略 Happy 中的剩余输入(Haskell 的解析器生成器)

根据 Pascal 语法,程序以点结束。如果后面有任何内容,Free Pascal (FPC/Lazarus) 会省略剩余的字符。

我想要类似的行为。我使用了一个自定义的 monadic 标记器,它很懒惰,所以我只是希望 Happy 在主规则成功时不要调用延续。

基本上我想要这样的东西:

重要的是,在解析最后一个点之后根本不应该发生标记化,因为它可能会导致错误。