问题标签 [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.
haskell - 用 Happy 解析 switch 语句
所以,我正在尝试解析包含这样的 switch 语句的代码
和
但我不断得到:
当我运行生成的解析器时。这里奇怪的是它在“case”关键字的第二个实例上失败,但不是第一个。为什么会这样?
parsing - 语法歧义:为什么?(问题是:“(a)”与“(az)”)
所以我试图为单行语句实现一个非常简单的语法:
我正在使用 Happy 解析器生成器 (http://www.haskell.org/happy/) 但由于某种原因似乎存在一些歧义问题。
错误消息是:“移位/减少冲突:1”
我认为歧义在于这两行:
一个例子是:“(a)”与“(az)”
对于这两种情况,词法分析器会给出以下信息:
我不明白的是,这对于 LL[2] 解析器来说是如何模棱两可的。
如果这里有帮助的话,那就是整个 Happy 语法定义:
谢谢!
parsing - 与使用解析器组合器相比,使用快乐之类的解析器生成器有什么优势?
要学习如何编写和解析上下文无关语法,我想选择一个工具。对于 Haskell,有两个大选项:Happy,它从语法描述生成解析器和 *Parsec,它允许您直接在 Haskell 中编写解析器。
两种方法的(缺点)优点是什么?
parsing - 覆盖“内部快乐错误” - notHappyAtAll
我正在使用 Happy 来生成解析器。
我发现,当我给它在比顶层更低级别匹配部分语法的标记时(例如给它自己的表达式,这不是语句的一部分),我得到一个“内部快乐错误”而不是解析错误。
有没有办法覆盖notHappyAtAll
,以便我可以打印比“内部快乐错误”更好的错误消息?显然,除了更改自动生成的解析器文件,因为我每次更新语法时都必须这样做。
parsing - Happy 解析器中令人费解的错误消息
我正在使用Happy在 Haskell 中构建一个 JavaScript 解析器,我遇到了一条错误消息,无论我多么努力,我都无法调试。
我不能在这里发布所有代码,因为它有数千行。我会尝试发布相关的内容,如果有人可以帮助我,我将不胜感激!
此错误消息很长,请多多包涵。我遗漏了大部分内容HappyAbsSyn
。如果有帮助,我可以提供完整的错误消息。
了解?好的,所以我做的第一件事是查看 Parser.hs 中的第 800 行(Happy 生成的文件)。
action_90
定义为:
除非我们了解代码对应的内容,否则这显然没有多大意义。我在编译时要求 Happy 生成一个信息文件,这是(我认为)适当的部分:
所以看起来这与 ID 声明有关。在这一点上,我真的很困惑。有人对我应该从这里去哪里有任何建议吗?我猜要解决这个问题,您需要查看抽象语法。这里有一点。同样,如果有帮助,我很乐意展示更多内容。
对不起,这么长。我在我的智慧在这里结束。任何帮助或指示都会很棒。
javascript - 如何匹配快乐解析器中的正则表达式?
我正在用Happy编写一个 JavaScript 解析器,我需要匹配一个正则表达式。我不想完全解析正则表达式,只需将其存储为字符串。
我的 AST 的相关部分如下所示:
这是相关的快乐代码:
我的问题是,我应该如何定义我的regex
非终端?这种结构对吗?
haskell - 转移/减少快乐中的冲突
如何制定正确的规则来解析 if-then[-else] 案例?这是一些语法:
此语法正确解析以下表达式:
但是编译会引发有关移位/减少冲突的警告。快乐的文档包含此类冲突的示例: http ://www.haskell.org/happy/doc/html/sec-conflict-tips.html
显示了两种解决方案,第一种是更改递归类型(在这种情况下不清楚如何做)。第二个是不改变任何东西。这个选项对我来说没问题,但我需要咨询。
haskell - 快乐:减少/减少冲突
为什么这会引发有关减少/减少冲突的警告
但接下来可以吗?
java - 如何在 Haskell 中为 Java 制作语法高亮?
很快,我将被迫在 Haskell 中展示一个项目,该项目旨在突出显示 Java 语法。我做了一些研究,发现 Happy 可能是一个解决方案(因为它是一个类似 yacc 的解析器)。还提到了 Bison 和 Parsec。由于我是 Haskell 的新手,我真的不知道如何开始这个项目。任何提示都会有很大帮助。
谢谢!