我需要yacc的幫助。 我正在研究一箇中綴/後綴翻譯器,後綴部分的中綴非常簡單,但我在後綴中綴翻譯時遇到了一些問題。 這裏是什麼我打算做一個例子(只是爲了翻譯一個簡單的AB + C-或ABC + - )Yacc「規則因衝突而無用」
exp: num {printf("+ ");} exp '+'
| num {printf("- ");} exp '-'
| exp {printf("+ ");} num '+'
| exp {printf("- ");} num '-'
|/* empty*/
;
num: number {printf("%d ", $1);}
;
obiously這是行不通的,因爲我所要求的動作(與用printfs )前的實際身體的話,在編譯時,我得到很多
警告:解析器規則無用,由於衝突
的問題是,用printfs是正是我需要他們(或者我的輸出不會是一箇中綴表達)。有沒有一種方法可以保持正確的打印行爲,並讓yacc識別它需要使用哪一個?
yacc是一個「相當簡單的工具」,在我眼中是一件好事。這意味着你可以預測地使用它;過於複雜的工具會帶來更多麻煩,更多! – 2011-04-10 16:32:38