问题标签 [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.

0 投票
1 回答
48 浏览

parsing - 为什么这个语法没有减少/减少冲突?

考虑以下(当然是荒谬的 - 为了说明这一点,它已被大大简化)语法:

在此语法上运行时,Bison 不会抱怨减少/减少冲突,但对我来说似乎有一个。假设我们已经解析了 anegationExpression和 a constantExpression; 对我来说,基于上述定义,解析器现在可以做两件事:

  1. testRule使用上面的规则 1将序列简化为
  2. 使用上面的规则 2将 减少constantExpression到(在这种情况下将保持不变,因此解析堆栈将如下所示:)testRulenegationExpressionnegationExpression testRule

但是没有发出警告,当我查看 Bison 生成的 .output 文件时,似乎没有任何歧义:

根据野牛文档

如果有两个或多个规则适用于相同的输入序列,则会发生 reduce/reduce 冲突。

这不正是这里的情况吗?

0 投票
1 回答
367 浏览

parsing - 解决reduce-reduce冲突

语法问题部分:

该问题的描述:

每个运算符(ARROW,DCOLON...) 都是左关联的。运算符 NEW 是非关联的。

我该如何解决这种冲突?

0 投票
2 回答
461 浏览

bison - Bison减少/减少冲突

我写了以下语法:

现在,bison 发现了 8 个 reduce/reduce 冲突。当我删除行时

没有了。我认为优先级和关联属性定义明确。有人可以告诉我如何解决冲突吗?

0 投票
0 回答
34 浏览

parsing - 冲突:1 减少/减少,错误:预期的 ',' 或 '}' 在 '.' 之前 令牌

语法问题部分:

警告我得到:

在类别标记中,我尝试将“TRACELEVEL 错误”替换为“CATEGORY 错误”

之后我收到此错误:

文件 y.tab.c 只包含这些东西:

0 投票
0 回答
100 浏览

parsing - 查找reduce-reduce冲突示例

虽然许多问题都要求帮助解决减少减少冲突,但我没有这些问题,我实际上是在寻求您的帮助以找到一些问题。

我正在编写有关 LR(1) 解析器冲突的文档和练习。虽然我可以找到一些有趣的 shift-reduce 冲突,例如操作顺序或悬空 else 冲突,但我找不到既微妙又以尽可能少的规则出现的 reduce-reduce 冲突的示例。

为了改变,你能帮我找到问题而不是解决方案吗?

0 投票
0 回答
84 浏览

haskell - 快乐:生产顺序消除了 R/R 冲突

我有一个语法,根据产生的顺序,快乐报告 3 减少/减少冲突或没有。我能找到的最小示例是:

这有 3 个减少-减少冲突,基于无法区分“ both 7 -3”和“ both 7-3 2”。很公平!

但是,如果将最后两个产生式换成 E ('-' E %prec NEGE '-' E),reduce/reduce 冲突就会消失。更令人费解的是,如果您随后删除该%prec NEG指令,它们就会返回。我对这里发生的事情感到很困惑:为什么顺序很重要?

0 投票
1 回答
206 浏览

bison - Bison shift/reduce 和 reduce/reduce 冲突

好的,我现在已经尝试重写此 Bison 语法 3 次,并且一直遇到 shift/reduce 和 reduce/reduce 冲突。我试图解析的语法如下。{...} 中的项目是一个或另一个。[...] 中的项目是可选的。

我在让最后三个全部工作时遇到问题。我可以让其中任何一个工作,但不是所有四个。我现在有一个班次/减少和一个减少/减少冲突。我的语法如下:

我认为这些名称是自我记录的(至少您应该能够理解类型)。任何帮助将不胜感激。我有一种感觉,要么简化太多,要么不够简化。

注意:我想出了如何编辑我的帖子并删除了选项并将 SDL_K_COMMA 和 SDL_K_SEMI 分别更改为 ',' 和 ';'。

谢谢。

以下是一些应该解析的示例:

我希望这有帮助。

顺便说一句:这是 EBNF(有点):

我想就是这样。

0 投票
0 回答
320 浏览

javascript - Redux 状态未更新问题。但是 redux 记录器显示正确的操作和下一个状态更新

我正在为我的 Web 应用程序使用 Redux。用户登录后必须更新状态。Redux logger 用于调试。redux 记录器中的一切都很好,但状态没有更新。请提供有关此问题的任何想法。

减速机:

组合减速器:

mapStateToProps:(在此 console.log 中显示所有对象为空)

在登录页面后访问状态,但 adminReducers 显示为空:

在此处输入图像描述

Redux 记录器:(显示状态中的 adminReducers 已更新)

在此处输入图像描述

0 投票
1 回答
66 浏览

parsing - 野牛消除可空非终端之间的减少/减少冲突?

我正在使用 Bison(AFAIK 他们LL(1)默认使用解析)。

我的语法是这样说的:

现在,bison警告说reduce/reduce冲突,因为params两者arguments都可以为空(在零参数的情况下function())。

我的问题是,我怎样才能消除(而不是压制)这种冲突?

尽管有人建议使用不同的解析技术,但如果可能(我应该这样做),我想对自己说清楚,或者我应该忽略它。

0 投票
1 回答
452 浏览

parsing - 如何解决这个减少/减少冲突?

我正在为 B 编程语言编写编译器。这种语言的语法在语法上区分左值和右值。在将语法翻译成 yacc 语法时,我偶然发现了 reduce/reduce 冲突。这是一个最小、完整且可验证的示例:

Yacc 表示 1 个减少/减少冲突。这种减少/减少冲突出现在状态 6 中:

显然应该选择“reduce 1”作为这种冲突的解决方案,因为“reduce 2”似乎永远不会导致成功的解析。

我该如何解决这个冲突?

出于可移植性的原因,我不愿意使用 bison 或 POSIX.1 2008 中指定之外的任何 yacc 功能。