问题标签 [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.
grammar - 如何解决强制转变或减少的转变/减少冲突?
当 Yacc/Bison 中存在 shift/reduce 冲突时,是否可以强制冲突完全按照您的意愿解决?换句话说:是否可以明确强制它优先考虑转变或减少?
对于我所阅读的内容,如果您对默认分辨率感到满意,您可以告诉生成器不要抱怨它。我真的不喜欢这样,因为它混淆了你的理性选择。
另一种选择是重写语法以解决问题。我不知道这是否总是可能的,而且这通常会使它更难理解。
最后,我已经阅读了优先规则可以解决这个问题。我无能为力地尝试了很多方法,但我无法让它发挥作用。是否可以为此使用优先规则?如何?
虽然我的模棱两可的语法非常不同,但我可以使用Bison 手册中的经典 if-then-else来举一个具体的例子:
parsing - 解析器问题,寻找参数的结尾,发生移位/减少冲突
我试图通过识别没有逗号来设置我的解析器以找到某个参数的结尾,所以我基本上将它设置为找到这样的参数
参数:end_parameter 逗号
(这个数据类型只是一个列表,所以没有任何东西表明它结束了——只是当没有逗号分隔项目时它会停止)
end_parameter 在下面定义并执行它应该做的事情。解析器通过将右大括号识别为结尾来处理其他数据类型,但是当我设置以缺少逗号结尾的类型时,我遇到了移位/减少错误。有没有人有什么建议?
parsing - 野牛报告转移减少了冲突,但我怎样才能找到它们?
我正在开发具有 OOP 语言大部分功能的野牛解析器,现在野牛抱怨存在一些移位/减少冲突。我有:
问题是它没有告诉我他们在哪里。有谁知道如何找到那里的冲突?
提前致谢。
bison - 语法规范解决 Shift/Reduce 冲突
我正在使用 Jison (Bison) 创建一个简单的标记语言。我显然对此很陌生,但细微的变化效果很好。我只是不明白 S/R 冲突的根源。
两个词法分析器操作(具有不同的开始条件)返回“文本”似乎并不重要,我喜欢这个,因为它似乎允许语法有更少的规则,而且给用户的错误消息是一致的。无论上下文如何,我都尝试使“文本”规则通用,并且我还尝试为每个标记赋予不同的名称,但是当它们一起出现时,它似乎对 S/R 冲突没有任何影响。
解析器应该创建一个带有纯文本、子数组和各种特殊节点的 json 对象。
规格:
警告:
不同的生成器算法或多或少都有问题,但它们似乎都有问题。
谢谢!
bison - 野牛班次减少冲突 - 无法解决
语法如下:
我通过 bison -d -v xyz.l 获得的转变减少冲突处于状态 97
但我不知道如何解决这个冲突。等待答案。
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.
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 程序如下:
%%
grammar - 野牛班次减少冲突
有冲突的语法的精简版本:
问题是变量和函数都以 TYPE 和 IDENTIFIER 开头,例如
在这种语言中,变量总是在函数之前声明,但是当尝试解析时,它总是给出
解析错误:语法错误,意外'(',期待','或';' [在foo之后]
如何使 variable_list 不那么贪婪,或者让解析器意识到如果下一个标记是 '(' 而不是 ';' 或 '',那么它显然是一个函数而不是变量声明?
冲突的野牛调试输出是
我已经尝试了各种 %prec 语句以使其更喜欢 reduce(尽管我不确定在这种情况下会有什么区别),但没有成功让野牛使用 reduce 来解决这个问题,我也尝试过改组规则围绕制定诸如 non_empty_var_list 之类的新规则并将正文拆分为 function_list | non_empty_var_list function_list 并且没有任何尝试可以解决此问题。我是新手,我已经没有如何解决这个问题的想法了,所以我完全感到困惑。
parsing - 与后缀/中缀运算符的优先级冲突
这是为柠檬解析器生成器编写的语法:
尝试编译它时,生成器会产生以下冲突:
为什么会出现冲突,因为 PreIncrementation 和 PostDecrementation 的优先级和关联性已在语法中明确指定?
datetime - 使用 YACC 移位的日期时间解析器减少冲突
我有以下 YACC 解析器
%%
它提供了三班减少冲突。我怎样才能删除它们????