2012-12-03 32 views
2
%token A B C D E F G H 
%% 
x : y H y | z H z 
; 

y : G | t | y B G | y B t 
; 

z : w | z D w 
; 

w : C | t | E z F 
; 

t : A 
; 

由於t有減少/減少衝突。我們如何解決它?我們如何解決這個Yacc衝突

+1

不知道爲什麼它被否決了這麼多 - 看起來像p的descriptin相當合理規模的樣本問題和疑問...語法背後的推理可能是有用的,但不是必需的... –

+0

@AlexeiLevenkov不幸的是,我想很多人只是自動投票,如果他們不明白的東西/看起來像垃圾郵件。我對Yacc一無所知,因此恐怕無法回答,但這個問題似乎是合理的。 –

+0

Yacc是一個解析器生成器,我正在設計一個語法。我用字母簡化了語法中有問題的部分。 – mausmust

回答

0

默認情況下,y:t和w:t之間的衝突被解析爲y:t。如果你想以另一種方式,重新排序相應的規則。或者你可以擴展這樣的其中之一: -

%token A B C D E F G H 
%% 
x : y H y | z H z 
; 

w : C | A | E z F 
; 

z : w | z D w 
; 

y : G | A B G | A B A | y B G | y B A 
; 

請注意,我已經擺脫了的T規則並取消了Y:通過擴大它的規則: -

第1步:消除T:規則

%token A B C D E F G H 
%% 
x : y H y | z H z 
; 

y : G | A | y B G | y B A 
; 

z : w | z D w 
; 

w : C | A | E z F 
; 

第2步:

%token A B C D E F G H 
%% 
x : y H y | z H z 
; 

y : G | A | A B G | A B A | y B G | y B A 
; 

z : w | z D w 
; 

w : C | A | E z F 
; 
+0

它的確如此,謝謝你的回答。 – mausmust