问题标签 [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.
shift-reduce-conflict - 具有讽刺意味的归约问题
我已经尝试解决这个问题将近 2 周了。起初是 shift-reduce 错误,现在是 reduce-reduce 问题。我已经尝试了很多方法,现在我已经到了需要帮助的地步。我已经编写了多种语言,并且几乎在 10 年前就开始了,这是我第一次真正发帖寻求帮助。
我正在尝试为流行的脚本引擎 Angel Script 编写语法类,我从解析器类中获得了 BNF 语法。您可以在此处找到语言参考http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script.html
在我的课堂上,我为每条规则添加了一条关于我试图复制的 BNF 语法的评论。目前我实际上并没有使用我定义的关键字。一旦我可以让它在没有冲突的情况下工作,我会回去尝试清理它。这是我的课http://pastebin.com/FydCTqmU
您应该能够只创建一个 Dll 并使用语法资源管理器运行它,您将看到所有错误。似乎大多数错误都来自同一个问题,所以我想也许一旦我能解决这个问题,它几乎可以解决所有问题。我编写了一个应用程序来帮助我将语法拆分为更不具体的部分,但我认为这导致我遇到了更多的 reduce-reduce 问题。
我尝试压缩我的代码以希望通过reduce-reduce错误,但它似乎保持完全相同,只是看起来更加混乱。如果有人能帮我把它弄好,我会很乐意通过贝宝寄给他们几百美元。我正要放弃它已经超过 2 周的时间了。我的电子邮件是 Anth0ny229@live.com。
我已经从 shift-reduce 到 reduce-reduce 错误。似乎无论我做什么,我都会遇到问题。我只是无法绕过它,我真的需要帮助。正如我所提到的,我会更乐意向某人支付帮助,只需给我发电子邮件即可。我计划制作一个像 babelua 这样的 Visual Studio 扩展,这样人们就可以使用 Visual Studio 编写 Angel Script 脚本,并希望添加调试支持。它将是免费的,因为我认为这将是一个很好的补充。因此,如果有人能以任何方式提供帮助,只要它最终工作,我会更乐意确保他们得到回报。谢谢你。
状态 S0(不足)输入上的减少-减少冲突: const identifier void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool ? auto :: 移位项目:
减少项目:
过渡:
c++ - Shift减少冲突,使用编译器的财务计算器
每当我添加时'(' term ')' { $$=$2; }
,我都会遇到减少冲突的操作,我正在尝试执行的操作是:(5) + (5)
,
(5.5) + (5)
,
((5.5) + (5)) - (5)
,
((5.5) / (5.5)) * (5)
等
我对 shift reduce 解析有点困惑,我们的教授只教我们如何在示例语法中进行 shift reduce 解析,而不是如何在 cpp 上应用它。
我用的是野牛。
parsing - 如何编写 PLY 语法来解析路径?
我正在尝试使用 PLY 编写一个语法来解析文件中的路径。我遇到了转变减少冲突,我不确定如何更改语法来解决它。这是我要解析的文件的示例。路径/文件名可以是任何可接受的 linux 路径。
所以这是我写的语法。
这是我的代币。我正在使用 PLY 包含的 ctokens 库。只是为了节省自己写的精力。
所以我相信“文件名”规则中存在移位减少冲突,因为解析器不知道是将令牌减少为“ID”还是转换为“ID PERIOD ID”。我认为在没有路径(“文件名”)的情况下还有另一个问题,它将消耗 pathexpr 中的令牌而不是减少为空。
我怎样才能修正我的语法来处理这些情况?也许我需要更改我的令牌?
warnings - 野牛移位/减少冲突/减少/减少冲突警告
当我在 Ubuntu Linux 中运行此野牛代码时,我收到以下警告:
这是一个更清晰的屏幕截图:http: //i.imgur.com/iznzSsn.png
编辑:减少/减少错误在
并且移位/减少错误在:
我找不到如何解决它们,有人可以帮忙吗?
这是下面的野牛代码:
compiler-construction - my_toy_compiler 中的移位/减少错误
我正在尝试使用 lsegal https://github.com/lsegal/my_toy_compiler的 my_toy_compiler,但是当我尝试“编译”它时出现 48 个 shift/reduce 错误。
我解决了 24 个 shift/reduce 错误,将此行添加到 parser.y 文件中:
但我仍然收到 24 错误,我不知道如何解决它。
希望你能帮我!
arrays - Bison 阵列移位减少冲突
我是 Bison 的新手,很长一段时间以来我一直在尝试创建一个数组和连接规则等,但无法弄清楚为什么我会在这里减少班次以及如何解决它:
T_OPEN 是“[”,T_CLOSE 是“]”。@ 应该连接两个数组。arr 是 void* 类型。那个部分 :
导致转移减少冲突。任何解决方案将不胜感激
bison - 野牛修复签名终端的移位/减少冲突
基于这个问题,这个 Bison 代码中的移位/减少冲突来自哪里?我正在尝试为这样的语法创建语法:
-10 + 3 - 2
或+4 - 2 + 1
。第一个整数显然有符号。
这是我已经拥有的:
我知道 for 的规则SignedTerm
显然是错误的,因为它会产生歧义,但我该如何解决呢?
parsing - 解决减少/减少冲突
我们有一个 CFG 语法,我们构造了 LR(1) Parsing Table。我们看到解析表上的一个单元格有一个减少 - 减少冲突。是否可以通过在每一步使用更多的前瞻输入符号来解决这个冲突?我问这个是因为我认为通过增加前瞻符号,我们可以(并不总是)只解决移位 - 减少冲突。我的意思是减少 - 减少冲突中的额外前瞻对我们没有帮助。我对吗 ?
parsing - Concatenation shift-reduce conflict
I have a simple grammar for JavaCUP's LR(1) parser that recognises concatenation expressions of identifiers and strings. I also want to add some empty function calls as a possible concatenation argument. However, when I try that, it leads to a shift/reduce conflict.
Grammar:
Input:
Conflict:
I have tried many different things like hiding identifier like IDENTIFIER second
at literal and second ::= | LPAREN RPAREN;
but I can't make it work.
yacc - ML-Yacc 错误涉及涉及 EXP 的 12 个移位/减少冲突 -> EXP BINOP EXP
这是错误:
这是语法:
我该如何解决这个问题?我是否需要重新思考语法并找到另一种方式来描述这种语法?
我也尝试过声明偏好顺序(尽管我使用这些的经验非常少),例如:
但什么都没有。