问题标签 [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 - Shift减少快乐语法中的冲突
你好优秀的程序员,
我在快乐(haskell)中建立了以下语法:
现在,While 循环包含了“do”之后的所有命令。如何改变这种行为?我已经尝试过 %left, %right ... :(
parsing - haskell 很高兴 - “无法匹配预期的类型”
我有一些问题要理解为 haskell 高兴的解析器生成器系统的错误消息。
例如这段代码
工作正常。
但如果我做这样的事情
我会收到一条巨大的错误消息。因此,如果您能帮助我理解它,那将是非常好的。
提前致谢
parsing - (Show ([(String, Int)] -> Int)) 没有实例
如果我使用 lambda 表达式,那么在快乐的生产规则中动态计算表达式的值是行不通的。
例如这段代码
来自http://www.haskell.org/happy/doc/html/sec-using.html不起作用。
或者更准确地说,我收到了一条错误消息
如果你能解释一下我必须改变什么,那就太好了。
它必须与 lambda 表达式和环境变量 p 有关。
当我使用数据类型时,一切都很好。
javascript - JS:数字和空格的正则表达式?
我正在使用happyJS并使用下面的正则表达式进行电话验证
但是,这只允许数字。我希望用户能够输入空格以及喜欢
知道为什么return /^(?:[0-9 ]+$)/.test(val);
不这样做吗?
grammar - 在我的语法中引入指针时减少/减少冲突
我正在开发一个小型编译器,以便更好地了解创建自己的语言的困难。现在我正处于向我的语法添加指针功能的阶段,但是这样做我遇到了减少/减少冲突。
这是我的语法的简化版本,可由bnfc
. 我使用happy
解析器生成器,这就是程序告诉我存在减少/减少冲突。
我正处于语法如何工作的学习阶段。但我想我知道会发生什么。考虑这两个程序
和
(typedef
和main(){}
部分不相关,在我的语法中。但它们给出了一些上下文)
在第一个程序中,我希望它解析a "*" b
为Stmt ==(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;
parsing - Parsec 或 happy (with alex) 或 uu-parsinglib
我将编写一个verilog(或vhdl)语言的解析器,并对解析的数据进行大量操作(某种转换)。我打算解析非常大的文件(完整的 Verilog 设计,大至 10K 行),我最终将支持大部分 Verilog。我不介意打字,但我不想在添加对其他规则的支持时重写代码的任何部分。
在 Haskell 中,您会推荐哪个库?我知道 Haskell 并且之前使用过 Happy(玩)。我觉得使用 Parsec 来转换代码中的解析字符串是有可能的(这是一个很大的优势)。我没有使用 uu-paringlib 的经验。
那么要解析verilog/VHDL的完整语法,推荐使用其中的哪一个?我主要关心的是我可以随心所欲地操纵解析数据的易用性和“正确性”。速度不是主要问题。
parsing - 解析此 BNF 时如何删除某些术语?
我正在尝试使用 Happy 库解析布尔表达式。问题是当我引入括号时结果不如我想要的那么好。我做了以下语法。
下面是要解析的字符串和结果。
如果它是以下内容,我会更喜欢,因为它更容易解释:
编辑 - 完整代码
parsing - Happy中命题逻辑解析器中的移位/减少冲突
我正在根据命题逻辑语法的BNF 定义在快乐上制作一个简单的命题逻辑解析器,这是我的代码
现在,我这里有两个问题
- 出于某种原因,我遇到了 4 个 shift/reduce 冲突,我真的不知道它们可能在哪里,因为我认为优先级会解决它们(而且我认为我正确地遵循了 BNF 语法)......
- (这是一个 Haskell 问题)在我的词法分析器函数中,由于某种原因,我在说如何处理 '¬' 的那一行出现解析错误,如果我删除该行它是有效的,为什么会这样?(这个问题解决了)
任何帮助都会很棒。
haskell - cabal-install 不保留快乐的版本
我正在尝试这样做cabal install hoogle
,但是haskell-src-exts-1.13.5
依赖项存在问题:
当我尝试这样做cabal install happy
时,它似乎成功完成,但 cabal-install 不保留版本:
如您所见,版本是[ Unknown ]
. 它仍然是未知的,如果我再次尝试运行,cabal-install 仍然会被遗忘cabal install happy
。
是什么赋予了?
提前致谢!
parsing - Haskell - 快乐 - “没有实例......”错误
我正在尝试熟悉 Haskell 的快乐解析器生成器。目前,我有一个来自文档的示例,但是当我编译程序时,出现错误。这是代码:
我收到此错误:
你知道为什么以及如何解决它吗?