2013-07-25 142 views
0

在以下簡單文法中,關於狀態4的衝突, 可以'移動'成爲所採取的動作而不改變規則嗎? (我認爲,在默認情況下轉變是野牛的首選操作)野牛移位/減少衝突

%token one two three 

%% 

start : a; 
a : X Y Z; 
X : one; 
Z : two | three; 
Y : two | ; 

%% 

回答

3

轉變是野牛的首選動作,你可以在狀態輸出中看到,它會在狀態4.它仍然會報告倒班轉移two減少衝突,但如果您願意,可以將其作爲警告。 (見%expect)。你可能會更好固定的語法:

start : a; 
a : X Z | X Y Z; 
X : one; 
Y : two; 
Z : two | three; 
1

移位是默認的,但導致生成的解析器給了一個錯誤的輸入one two所以這可能不是你想要什麼。相反,請按照rici的建議修正語法。