问题标签 [shift-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 回答
12372 浏览

parsing - 转移/减少野牛中的冲突

我是新手Bison,我遇到了移位/减少冲突的问题......我正在尝试从文件加载到array data[]

这是我的野牛代码的一部分:

我收到此错误:

知道我哪里出错了吗?

0 投票
2 回答
199 浏览

python - 我的语法歧义在哪里?

我有以下模棱两可的语法,其中大写字母规则适用于简单的词汇标记:

我收到 8 个 shift/reduce 错误(使用 Python 2.7 和 PLY 时)。

歧义是我如何定义“一个或多个”的结果,例如。block : expression | expression block?

0 投票
2 回答
792 浏览

parsing - 如何解决我的 PLY 语法中的这种减少班次冲突?

我正在为编程语言编写语法,但我首先遇到了移位/减少问题。问题可以在状态中找到:

在进一步解释之前,我想澄清一下:

这是因为程序无法确定我是在调用函数还是将 ID 用作值(例如常量或变量)而导致移位/减少?

继续,有可能解决这个问题吗?我的语言目前不使用行分隔符(例如 C 中的“;”或 Python 中的“\n”)。解析器是 LALR(1)。

在函数调用或带有行分隔符的变量之间进行破译的最有效(向语法中添加最少规则)的方法是什么?

编辑:这是该状态的前瞻。

0 投票
1 回答
225 浏览

parsing - LALR(1) 语法如何区分变量和函数调用?

给定以下输入:

LALR(1) 语法有什么方法可以避免移位/减少冲突?转移/减少冲突决定减少y或继续减少(

(这是假设变量名可以是任何字母数字字符集,而函数调用是括号后的任何字母数字字符集。)

0 投票
2 回答
1513 浏览

parsing - 为什么我的三元运算符会导致 shift-reduce 冲突?

以下是我的语法:

在这种状态下,我收到一个 shift-reduce 错误:

我相信冲突在于

可以解释为true ? 1 : (false ? 3 : 2)(true ? 1 : false) ? 3 : 2

我已将 和 的优先级设置+-左关联和比?(我设置为右关联)更高的级别。

我究竟做错了什么?

0 投票
1 回答
267 浏览

parsing - 用于字符串连接的 LALR 语法

我一直在尝试解析连接的字符串,以便表达式也可以连接起来形成字符串。那是,

上面应该正确解析。问题是这+会导致减少班次的冲突。我一直在使用以下语法;

我在尝试找到+不会导致移位减少冲突的语法方面没有任何成功。我希望有一种方法可以制作这种语法 LALR,我非常感谢在尝试找到它时提供的一些帮助。

0 投票
1 回答
577 浏览

cygwin - 移位/减少与 if ... else 语句的冲突

我正在尝试制作一个关于类似 java 的语言的解析器,但是使用 else 语句时,会出现移位/减少冲突。我尝试了野牛bison_file.y --report=state,关于冲突的结果是:

状态 62 31 语句: if_statement 。65 if_else_statement: if_statement 。ELSE statement ELSE shift, and go to state 84 ELSE [reduce using rule 31 (statement)] $default reduce using rule 31 (statement)

我想不出避免冲突的方法。有什么好主意吗?在这里,我提交完整的代码:

0 投票
1 回答
726 浏览

parsing - 我正在尝试为 mini java 构建一个解析器,我在表达式语法部分中遇到了 shift/reduce 冲突。我无法解决这个冲突

这是 y.ouput 文件的一部分

状态 65

15 表达式:表达式。“&&“ 表达

16 | 表达 。“<”表达式

17 | 表达 。“+”表达式

18 | 表达 。“-“ 表达

19 | 表达 。“*“ 表达

20 | 表达 。“[“ 表达 ”]”

21 | 表达 。“。” “长度”

22 | 表达 。“。” 标识符“(”表达式“,”表达式“)”

25 | “!” 表达 。

这就是设置运算符优先级的方式

0 投票
1 回答
675 浏览

grammar - 明确语法上的 yacc shift/reduce 冲突

我的一段语法代码让我发疯。

我必须编写一个允许编写具有多个输入的函数的语法

例如


问题在于它是这样的赋值语句

ID = 表达式。

在下面的引用中,您可以看到 yacc 产生的输出。

也许有人可以帮助我消除这种语法的歧义

0 投票
1 回答
4053 浏览

parsing - 如何解决 SHIFT/REDUCE 冲突 - 在解析器生成器中

我需要帮助来解决这个问题并解释将来如何处理这种 SHIFT/REDUCE CONFLICTS。

我的杯子文件中的几个州之间存在一些冲突。

语法看起来像这样:

我在“(”[ActPars]“)”状态之间存在冲突。


我不想粘贴整个 700 行的杯子文件。我会给你相关的状态和错误输出。

这是第 1 行的代码。)

这是针对第 2 行的。)

错误输出如下所示:

错误:*遇到的冲突比预期的多——解析器生成中止