28得票5回答
使用解析器生成器(如happy)与使用解析器组合器相比有什么优势?

为了学习如何编写和解析上下文无关语法,我想选择一种工具。对于Haskell来说,有两个主要的选项:Happy可以从语法描述生成解析器,而*Parsec允许您直接在Haskell中编写解析器。 这两个方法的优缺点是什么?

19得票1回答
使用Alex和Happy管理位置信息

我正在学习使用Alex和Happy编写一个小型编译器。我希望为我的AST节点维护行列信息,以便向用户提供有意义的错误消息。为了说明我计划如何做到这一点,我写了一个小例子(请参见下面的代码),我想知道我解决问题的方式(将AlexPosn附加到标记上,将多态属性字段附加到AST节点上,使用tkPo...

19得票1回答
cabal-install无法保留happy的版本号

我一直在尝试执行cabal install hoogle,但是和haskell-src-exts-1.13.5的依赖关系出了点问题: Configuring haskell-src-exts-1.13.5... setup: The program happy version >=1....

17得票1回答
Parsec、Happy(带Alex)或uu-parsinglib

我将编写一个Verilog(或VHDL)语言的解析器,并对解析出来的数据进行大量操作(一种转换)。我打算解析非常大的文件(完整的Verilog设计,有10K行之多),并最终支持大部分Verilog。我不介意手动输入,但是我不想在添加对某些规则的支持时重写任何代码的部分。 在Haskell中,...

16得票1回答
如何使Stack调用Happy、Alex和其他构建工具?

作为我的编译器的一部分,我需要alex和happy在我的构建过程中运行。Stack如何支持这种情况? 奖励问题:我如何将alex和happy注册为编译时依赖项?

15得票2回答
使用Cabal时,与Alex/Happy配合使用。

我正在为一门课程编写一个编译器。这门课程并不是专门讲授Haskell,但我选择使用Haskell来编写我的编译器和解释器。我已经设置了一个Cabal包,希望能够方便我的教授运行和编译。 在"build-tools"字段中,我已经添加了Happy和Alex两个可执行文件,但是Cabal忽略了这...

13得票1回答
如何在Happy中使用Alex单子词分析器?

我正在尝试使用Alex + Happy构建解析器,特别是我有兴趣学习如何使用Alex的monad包装器。我已经查看了Alex和Happy的文档,但它们对于我来说都缺乏有用的关于如何将它们一起使用的信息。我已经成功地将它们与basic和posn包装器一起使用,但是对于monad我感到不知所措。 ...

11得票1回答
覆盖“内部快乐错误” - notHappyAtAll

我正在使用Happy生成解析器。 我发现,当我给它的记号与语法在顶层以下的某个较低级别匹配时(例如,仅提供表达式而不是语句的一部分),我会得到一个“内部Happy错误”,而不是解析错误。 有没有一种方法可以覆盖notHappyAtAll,以便我可以打印比“Internal Happy Er...

11得票5回答
JS:用于匹配数字和空格的正则表达式?

我正在使用happyJS,并且使用下面的正则表达式进行电话验证phone: function (val) { return /^(?:[0-9]+$)/.test(val); } 但是这只允许输入数字。我希望用户也能够输入空格,就像这样:238 238 45383 你知...

10得票1回答
Happy和Alex如何自给自足?

happy的源代码树中包含AttrGrammarParser.ly和Parser.ly,而alex的源代码树中则包含Scan.x。但是,据我所知,为了编译happy,我们需要使用happy将.ly文件转换为.lhs文件,而为了编译alex,我们需要使用alex将.x文件转换为.hs文件。因此,...