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

grammar - 如何解决强制转变或减少的转变/减少冲突?

当 Yacc/Bison 中存在 shift/reduce 冲突时,是否可以强制冲突完全按照您的意愿解决?换句话说:是否可以明确强制它优先考虑转变或减少?

对于我所阅读的内容,如果您对默认分辨率感到满意,您可以告诉生成器不要抱怨它。我真的不喜欢这样,因为它混淆了你的理性选择。

另一种选择是重写语法以解决问题。我不知道这是否总是可能的,而且这通常会使它更难理解。

最后,我已经阅读了优先规则可以解决这个问题。我无能为力地尝试了很多方法,但我无法让它发挥作用。是否可以为此使用优先规则?如何?

虽然我的模棱两可的语法非常不同,但我可以使用Bison 手册中的经典 if-then-else来举一个具体的例子:

0 投票
1 回答
51 浏览

parsing - 解析器问题,寻找参数的结尾,发生移位/减少冲突

我试图通过识别没有逗号来设置我的解析器以找到某个参数的结尾,所以我基本上将它设置为找到这样的参数

参数:end_parameter 逗号

(这个数据类型只是一个列表,所以没有任何东西表明它结束了——只是当没有逗号分隔项目时它会停止)

end_parameter 在下面定义并执行它应该做的事情。解析器通过将右大括号识别为结尾来处理其他数据类型,但是当我设置以缺少逗号结尾的类型时,我遇到了移位/减少错误。有没有人有什么建议?

0 投票
1 回答
865 浏览

parsing - 野牛报告转移减少了冲突,但我怎样才能找到它们?

我正在开发具有 OOP 语言大部分功能的野牛解析器,现在野牛抱怨存在一些移位/减少冲突。我有:

问题是它没有告诉我他们在哪里。有谁知道如何找到那里的冲突?

提前致谢。

0 投票
1 回答
7410 浏览

bison - 语法规范解决 Shift/Reduce 冲突

我正在使用 Jison (Bison) 创建一个简单的标记语言。我显然对此很陌生,但细微的变化效果很好。我只是不明白 S/R 冲突的根源。

两个词法分析器操作(具有不同的开始条件)返回“文本”似乎并不重要,我喜欢这个,因为它似乎允许语法有更少的规则,而且给用户的错误消息是一致的。无论上下文如何,我都尝试使“文本”规则通用,并且我还尝试为每个标记赋予不同的名称,但是当它们一起出现时,它似乎对 S/R 冲突没有任何影响。

解析器应该创建一个带有纯文本、子数组和各种特殊节点的 json 对象。

规格:

警告:

不同的生成器算法或多或少都有问题,但它们似乎都有问题。

谢谢!

0 投票
4 回答
12701 浏览

bison - 野牛班次减少冲突 - 无法解决

语法如下:

我通过 bison -d -v xyz.l 获得的转变减少冲突处于状态 97

但我不知道如何解决这个冲突。等待答案。

0 投票
3 回答
23327 浏览

bison - Reforming the grammar to remove shift reduce conflict in if-then-else

How do I remove shift-reduce conflict for bison for the given grammar?

A solution giving the modified grammar would be highly appreciated.

0 投票
2 回答
589 浏览

compiler-construction - Shift 减少 YACC 中的冲突

我正在尝试以下 yacc 代码并且我收到 shift/reduce 错误。我对此很陌生

The Purpose of the code is to prepare the syntax for if - else with logical operators also incorporated

此相应 yacc 代码的 Lex 程序如下

%%

0 投票
1 回答
4123 浏览

grammar - 野牛班次减少冲突

有冲突的语法的精简版本:

问题是变量和函数都以 TYPE 和 IDENTIFIER 开头,例如

在这种语言中,变量总是在函数之前声明,但是当尝试解析时,它总是给出

解析错误:语法错误,意外'(',期待','或';' [在foo之后]

如何使 variable_list 不那么贪婪,或者让解析器意识到如果下一个标记是 '(' 而不是 ';' 或 '',那么它显然是一个函数而不是变量声明?

冲突的野牛调试输出是

我已经尝试了各种 %prec 语句以使其更喜欢 reduce(尽管我不确定在这种情况下会有什么区别),但没有成功让野牛使用 reduce 来解决这个问题,我也尝试过改组规则围绕制定诸如 non_empty_var_list 之类的新规则并将正文拆分为 function_list | non_empty_var_list function_list 并且没有任何尝试可以解决此问题。我是新手,我已经没有如何解决这个问题的想法了,所以我完全感到困惑。

0 投票
1 回答
228 浏览

parsing - 与后缀/中缀运算符的优先级冲突

这是为柠檬解析器生成器编写的语法:

尝试编译它时,生成器会产生以下冲突:

为什么会出现冲突,因为 PreIncrementation 和 PostDecrementation 的优先级和关联性已在语法中明确指定?

0 投票
1 回答
460 浏览

datetime - 使用 YACC 移位的日期时间解析器减少冲突

我有以下 YACC 解析器

%%

它提供了三班减少冲突。我怎样才能删除它们????