问题标签 [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 投票
2 回答
1010 浏览

haskell - Shift减少快乐语法中的冲突

你好优秀的程序员,

我在快乐(haskell)中建立了以下语法:

现在,While 循环包含了“do”之后的所有命令。如何改变这种行为?我已经尝试过 %left, %right ... :(

0 投票
2 回答
523 浏览

parsing - haskell 很高兴 - “无法匹配预期的类型”

我有一些问题要理解为 haskell 高兴的解析器生成器系统的错误消息。

例如这段代码

工作正常。

但如果我做这样的事情

我会收到一条巨大的错误消息。因此,如果您能帮助我理解它,那将是非常好的。

提前致谢

0 投票
1 回答
1370 浏览

parsing - (Show ([(String, Int)] -> Int)) 没有实例

如果我使用 lambda 表达式,那么在快乐的生产规则中动态计算表达式的值是行不通的。

例如这段代码

来自http://www.haskell.org/happy/doc/html/sec-using.html不起作用。

或者更准确地说,我收到了一条错误消息

如果你能解释一下我必须改变什么,那就太好了。

它必须与 lambda 表达式和环境变量 p 有关。

当我使用数据类型时,一切都很好。

0 投票
5 回答
21077 浏览

javascript - JS:数字和空格的正则表达式?

我正在使用happyJS并使用下面的正则表达式进行电话验证

但是,这只允许数字。我希望用户能够输入空格以及喜欢

知道为什么return /^(?:[0-9 ]+$)/.test(val);不这样做吗?

0 投票
1 回答
621 浏览

grammar - 在我的语法中引入指针时减少/减少冲突

我正在开发一个小型编译器,以便更好地了解创建自己的语言的困难。现在我正处于向我的语法添加指针功能的阶段,但是这样做我遇到了减少/减少冲突。

这是我的语法的简化版本,可由bnfc. 我使用happy解析器生成器,这就是程序告诉我存在减少/减少冲突。

我正处于语法如何工作的学习阶段。但我想我知道会发生什么。考虑这两个程序

typedefmain(){}部分不相关,在我的语法中。但它们给出了一些上下文)

在第一个程序中,我希望它解析a "*" bStmt ==(SExpr)==> Expr ==(EMult)==> Expr * Expr ==(..)==> Ident "*" Ident,即基本上开始使用SExpr规则进行单步执行。

同时我想my_type * my_type_pointer_variable扩展使用规则。Stmt ==(SDecl)==> Type Ident ==(TPointer)==> Type "*" Ident ==(TAlias)==> Ident "*" Ident.

但是语法阶段不知道标识符最初是类型别名还是变量。


(1)我怎样才能摆脱减少/减少冲突,(2)我是唯一一个有这个问题的人吗?有没有明显的解决方案,c 语法如何解决这个问题?

到目前为止,我已经成功地通过使用“&”或其他符号而不是“*”来更改我的语言的语法,但这是非常不可取的。此外,我无法从各种公共 c 语法中理解,并试图了解为什么他们没有这个问题,但我在这方面没有运气。

最后,我如何自己解决这些问题?我从happy更详细的输出中了解到冲突是如何发生的,聪明是解决这些冲突的唯一方法吗?恐怕我会偶然发现更多问题,例如在介绍时EIndir. Expr = '*' Expr;

0 投票
1 回答
4863 浏览

parsing - Parsec 或 happy (with alex) 或 uu-parsinglib

我将编写一个verilog(或vhdl)语言的解析器,并对解析的数据进行大量操作(某种转换)。我打算解析非常大的文件(完整的 Verilog 设计,大至 10K 行),我最终将支持大部分 Verilog。我不介意打字,但我不想在添加对其他规则的支持时重写代码的任何部分。

在 Haskell 中,您会推荐哪个库?我知道 Haskell 并且之前使用过 Happy(玩)。我觉得使用 Parsec 来转换代码中的解析字符串是有可能的(这是一个很大的优势)。我没有使用 uu-paringlib 的经验。

那么要解析verilog/VHDL的完整语法,推荐使用其中的哪一个?我主要关心的是我可以随心所欲地操纵解析数据的易用性和“正确性”。速度不是主要问题。

0 投票
1 回答
191 浏览

parsing - 解析此 BNF 时如何删除某些术语?

我正在尝试使用 Happy 库解析布尔表达式。问题是当我引入括号时结果不如我想要的那么好。我做了以下语法。

下面是要解析的字符串和结果。

如果它是以下内容,我会更喜欢,因为它更容易解释:

编辑 - 完整代码

0 投票
2 回答
874 浏览

parsing - Happy中命题逻辑解析器中的移位/减少冲突

我正在根据命题逻辑语法的BNF 定义在快乐上制作一个简单的命题逻辑解析器,这是我的代码

现在,我这里有两个问题

  1. 出于某种原因,我遇到了 4 个 shift/reduce 冲突,我真的不知道它们可能在哪里,因为我认为优先级会解决它们(而且我认为我正确地遵循了 BNF 语法)......
  2. (这是一个 Haskell 问题)在我的词法分析器函数中,由于某种原因,我在说如何处理 '¬' 的那一行出现解析错误,如果我删除该行它是有效的,为什么会这样?(这个问题解决了)

任何帮助都会很棒。

0 投票
1 回答
2689 浏览

haskell - cabal-install 不保留快乐的版本

我正在尝试这样做cabal install hoogle,但是haskell-src-exts-1.13.5依赖项存在问题:

当我尝试这样做cabal install happy时,它似乎成功完成,但 cabal-install 不保留版本:

如您所见,版本是[ Unknown ]. 它仍然是未知的,如果我再次尝试运行,cabal-install 仍然会被遗忘cabal install happy

是什么赋予了?

提前致谢!

0 投票
1 回答
208 浏览

parsing - Haskell - 快乐 - “没有实例......”错误

我正在尝试熟悉 Haskell 的快乐解析器生成器。目前,我有一个来自文档的示例,但是当我编译程序时,出现错误。这是代码:

我收到此错误:

你知道为什么以及如何解决它吗?