如何摆脱减少转移的野牛

时间:2014-05-08 18:37:42

标签: recursion bison yacc

在yacc中写这句话时,我有2班减:

%%
%token blablabla
%%

expresion: expresion + expresion { ; }
         |/*lambda*/
;

有谁知道如何删除警告shift-reduce?我查看了这个链接但是我遇到了野牛错误并且没有工作http://nereida.deioc.ull.es/~pl/perlexamples/node160.html

1 个答案:

答案 0 :(得分:2)

您可以使用

 %left '+'

告诉YACC如何解决班次减少冲突。这是最好的方法。

您可以通过制作不同的术语来使语法明确无误

expression = lower_expression + expression ;

当有很多运算符和不同级别的优先级时,该方法会变得乏味。