我有我认为是我的语法的一个简单部分这是从yacc获取错误。我知道我需要在某处添加%prec,但不确定其中的位置。yacc shift减少问题
Assignment : Ref '=' Ref
| Ref '=' Expression
| Ref '=' Value
| Ref '=' FunctionCall
;
Ref : ID
| ID '[' Expression ']'
;
Value : INT
| BOOLEAN
| CHAR
| STRING
;
错误即时得到的是:
warning: rule never reduced because of conflicts: Assignment: Ref '=' Ref
warning: rule never reduced because of conflicts: Assignment: Ref '=' Value
所以ID就是一个变量名,编号是一个变量的引用。
'ID'的定义是什么? – outis 2010-02-13 07:30:16
我们几乎肯定需要看到Expression,Value和FunctionCall的定义。表达式可能允许ID(或可能是Ref)作为选项,在这种情况下Ref = Ref规则是冗余w.r.t Ref =表达式。 – 2010-02-13 07:41:33