问题标签 [reduce-reduce-conflict]
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 - 为什么这个语法没有减少/减少冲突?
考虑以下(当然是荒谬的 - 为了说明这一点,它已被大大简化)语法:
在此语法上运行时,Bison 不会抱怨减少/减少冲突,但对我来说似乎有一个。假设我们已经解析了 anegationExpression
和 a constantExpression
; 对我来说,基于上述定义,解析器现在可以做两件事:
testRule
使用上面的规则 1将序列简化为- 使用上面的规则 2将 减少
constantExpression
到(在这种情况下将保持不变,因此解析堆栈将如下所示:)testRule
negationExpression
negationExpression testRule
但是没有发出警告,当我查看 Bison 生成的 .output 文件时,似乎没有任何歧义:
根据野牛文档:
如果有两个或多个规则适用于相同的输入序列,则会发生 reduce/reduce 冲突。
这不正是这里的情况吗?
parsing - 解决reduce-reduce冲突
语法问题部分:
该问题的描述:
每个运算符(ARROW,DCOLON...) 都是左关联的。运算符 NEW 是非关联的。
我该如何解决这种冲突?
bison - Bison减少/减少冲突
我写了以下语法:
现在,bison 发现了 8 个 reduce/reduce 冲突。当我删除行时
没有了。我认为优先级和关联属性定义明确。有人可以告诉我如何解决冲突吗?
parsing - 冲突:1 减少/减少,错误:预期的 ',' 或 '}' 在 '.' 之前 令牌
语法问题部分:
警告我得到:
在类别标记中,我尝试将“TRACELEVEL 错误”替换为“CATEGORY 错误”
之后我收到此错误:
文件 y.tab.c 只包含这些东西:
parsing - 查找reduce-reduce冲突示例
虽然许多问题都要求帮助解决减少减少冲突,但我没有这些问题,我实际上是在寻求您的帮助以找到一些问题。
我正在编写有关 LR(1) 解析器冲突的文档和练习。虽然我可以找到一些有趣的 shift-reduce 冲突,例如操作顺序或悬空 else 冲突,但我找不到既微妙又以尽可能少的规则出现的 reduce-reduce 冲突的示例。
为了改变,你能帮我找到问题而不是解决方案吗?
haskell - 快乐:生产顺序消除了 R/R 冲突
我有一个语法,根据产生的顺序,快乐报告 3 减少/减少冲突或没有。我能找到的最小示例是:
这有 3 个减少-减少冲突,基于无法区分“ both 7 -3
”和“ both 7-3 2
”。很公平!
但是,如果将最后两个产生式换成 E ('-' E %prec NEG
和E '-' E
),reduce/reduce 冲突就会消失。更令人费解的是,如果您随后删除该%prec NEG
指令,它们就会返回。我对这里发生的事情感到很困惑:为什么顺序很重要?
bison - Bison shift/reduce 和 reduce/reduce 冲突
好的,我现在已经尝试重写此 Bison 语法 3 次,并且一直遇到 shift/reduce 和 reduce/reduce 冲突。我试图解析的语法如下。{...} 中的项目是一个或另一个。[...] 中的项目是可选的。
我在让最后三个全部工作时遇到问题。我可以让其中任何一个工作,但不是所有四个。我现在有一个班次/减少和一个减少/减少冲突。我的语法如下:
我认为这些名称是自我记录的(至少您应该能够理解类型)。任何帮助将不胜感激。我有一种感觉,要么简化太多,要么不够简化。
注意:我想出了如何编辑我的帖子并删除了选项并将 SDL_K_COMMA 和 SDL_K_SEMI 分别更改为 ',' 和 ';'。
谢谢。
以下是一些应该解析的示例:
我希望这有帮助。
顺便说一句:这是 EBNF(有点):
我想就是这样。
parsing - 野牛消除可空非终端之间的减少/减少冲突?
我正在使用 Bison(AFAIK 他们LL(1)
默认使用解析)。
我的语法是这样说的:
现在,bison
警告说reduce/reduce
冲突,因为params
两者arguments
都可以为空(在零参数的情况下function()
)。
我的问题是,我怎样才能消除(而不是压制)这种冲突?
尽管有人建议使用不同的解析技术,但如果可能(我应该这样做),我想对自己说清楚,或者我应该忽略它。
parsing - 如何解决这个减少/减少冲突?
我正在为 B 编程语言编写编译器。这种语言的语法在语法上区分左值和右值。在将语法翻译成 yacc 语法时,我偶然发现了 reduce/reduce 冲突。这是一个最小、完整且可验证的示例:
Yacc 表示 1 个减少/减少冲突。这种减少/减少冲突出现在状态 6 中:
显然应该选择“reduce 1”作为这种冲突的解决方案,因为“reduce 2”似乎永远不会导致成功的解析。
我该如何解决这个冲突?
出于可移植性的原因,我不愿意使用 bison 或 POSIX.1 2008 中指定之外的任何 yacc 功能。