警告:2班次/减少冲突[-Wconflicts-sr]错误

时间:2018-06-06 17:34:39

标签: yacc lex

{{1}}

我无法解决冲突。当我使用一些编辑运行它时,我也会遇到分段错误。我正在使用yacc和lex。

1 个答案:

答案 0 :(得分:1)

两个shift-reduce冲突是由于您不需要在语句之间使用任何显式分隔符。因此,a = b - 3可以被解释为一个陈述或两个(a = b; - 3)。第二种解释对你来说似乎不太自然,但很容易通过语法得出。

此外,使用一元减号导致-2/3 -(2/3)的错误解析为(-2)/3,而不是-v。 (您可能会或可能不会发现这种情况,因为它对这些特定的运算符几乎没有语义后果。)bison manual和许多其他互联网资源中讨论了这个特殊问题和正确的解决方案。

如果使用# escape=` (backtick) FROM microsoft/aspnet:4.7.1-windowsservercore-1709 COPY ./bin/Release/Publish/ /inetpub/wwwroot RUN C:\inetpub\wwwroot\AspNetMVC3Setup.exe /q 命令行选项来生成解析器的描述,则这两种解释都会更加明显。请参阅Understanding your parser(再次,在野牛手册中)。