我在YACC(實際上是Bison)寫了一個語法,而且我有一個移位/縮減問題。它包含後綴增量和減量運算符。下面是語法的下調版本: %token NUMBER ID INC DEC
%left '+' '-'
%left '*' '/'
%right PREINC
%left POSTINC
%%
expr: NUMBER
| ID
| expr '+' expr
在解決移位/減少錯誤方面肯定有很多文檔和howtos。野牛文檔建議正確的解決方案通常只是期待他們並處理它。 當你有這樣的事情: S: S 'b' S | 't'
您可以輕鬆地解決這些問題是這樣的: S: S 'b' T | T
T: 't'
我的問題是:是否有更好的離開語法觸摸曖昧和%預計轉移/減少問題還是嘗試調整語法以避免它們會更好?我懷疑有一個平衡點,它是基於作者的需求,但我不知道。