在yacc中写这句话时,我有2班减:
%%
%token blablabla
%%
expresion: expresion + expresion { ; }
|/*lambda*/
;
有谁知道如何删除警告shift-reduce?我查看了这个链接但是我遇到了野牛错误并且没有工作http://nereida.deioc.ull.es/~pl/perlexamples/node160.html
答案 0 :(得分:2)
您可以使用
%left '+'
告诉YACC如何解决班次减少冲突。这是最好的方法。
您可以通过制作不同的术语来使语法明确无误
expression = lower_expression + expression ;
当有很多运算符和不同级别的优先级时,该方法会变得乏味。