问题标签 [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.
parsing - 愉快地解决错误
在正则表达式中,我可以写:
这将匹配整个字符串,例如
我尝试使用 Happy 中的令牌流来模拟这一点。
但是Happy生成的解析器不识别
有没有办法解决这个问题/我做错了吗?
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 文件,该文件仍然存在建造。但我不确定这一点。
是我的错误还是其中一种工具行为不端?
haskell - GLR_Lib.hs:找不到模块“系统”
我正在尝试从快乐中生成 GLR 解析器,但是一旦生成文件就会出错。
这是一个例子, ABC.y ,所以很清楚我在尝试什么:
这个例子适用于
但是,对 --glr 很满意,我无法构建结果。我想知道我是否做错了。准确地说,happy --glr 产生两个输出,ABC.hs。然而,ABCData.hs,
现在失败了。我得到的错误是找不到模块'System',它是haskell-98的隐藏成员......我尝试添加包haskell98,并得到了模棱两可的前奏问题。我还尝试将语法编码为 BNFC 并使用他们的 -glr 选项,但我仍然遇到其他错误,例如对显然已弃用的 Data.FiniteMap 的依赖。有没有办法得到这个编译?
haskell - “cabal install happy”导致内存溢出。(GHC 7.8.2)
在过去的几天里,我一直在努力让正确安装感到高兴,虽然我发现不仅要解决cabal install happy
错误(通过安装happy-1.19
和apt-get
添加/opt/happy/1.19.3/bin
到PATH
)具有挑战性,但现在它会贯穿源代码直到它到达ProduceCode
(15 /18) 并且似乎进入了一个无限循环。Ctrl+C
当整个系统变得无响应时,它会累积内存,直到我点击或关闭电源。
我想我记得这对 GHC-HEAD 根本不是问题,但我不想使用 head,因为它似乎每隔几天更新一次,需要我不断地重建我的包,除非我有什么技巧不知道从 迁移head
到head+1
。
haskell - Haskell,没有 (Show ([String, Int)] -> Int 的实例
尝试在这里编译 Haskell.Happy 示例:http ://www.haskell.org/happy/doc/html/sec-using.html#sec-other-datatypes ,在生成 .hs 文件后,我得到了
错误,试图编译它,而示例的第一部分编译并运行良好
我究竟做错了什么?
编辑:完整的错误信息
我在跑
这条线是
可能重复的问题的答案是传递一个环境,但我怎么能在这里做到呢?
haskell - Haskell“让”实现
阅读 Haskell.Happy 文档并实现 'let' 运算符
文档说它是“一个接受变量值环境并返回表达式计算值的函数:”
无法理解语法的实际含义,这些构造在 Haskell 中是如何调用的?
编辑:我的意思是这些
parsing - 在 Happy with GLR 模式下启动符号
假设我定义了一个快乐的语法
如果我编译这个
我通常对具有非平凡歧义的语法感兴趣;然而,这个例子展示了让我感到困惑的一点。
我得到了一个 Haskell 解析器。只有当令牌流是 abba 或 b 时,我才会成功
然而,我对失败更感兴趣。我想很快失败,而且我似乎需要比我想象的更多的代币。
例如,如果我提供令牌流 a,a,a ... 到第三个 a 失败。如果我喂 bbb,则需要第三个 b 才能失败。为什么要额外的前瞻?匹配 f 时,一旦我看到两个 'a',语法中就没有什么可以匹配的了。
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]
haskell - 省略 Happy 中的剩余输入(Haskell 的解析器生成器)
根据 Pascal 语法,程序以点结束。如果后面有任何内容,Free Pascal (FPC/Lazarus) 会省略剩余的字符。
我想要类似的行为。我使用了一个自定义的 monadic 标记器,它很懒惰,所以我只是希望 Happy 在主规则成功时不要调用延续。
基本上我想要这样的东西:
重要的是,在解析最后一个点之后根本不应该发生标记化,因为它可能会导致错误。