我有我認爲是我的語法的一個簡單部分這是從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