2014-09-12 43 views
0

假設我有以下語法:SLR(1)語法分析器小量

ë - > TX

筆 - >(E)| int Y

X - > + E | ε

Y - > * T | ε

建設項目集合我得到的狀態像這樣的:

筆 - > int類型。 Y

Y - >。 * T

Y - >。

這個狀態是否合適?也就是說,語法是SLR(1)還是不是? 謝謝

回答

0

您必須構造FOLLOW集並查看FOLLOW(Y)是否包含int或*。如果是這種情況,會出現轉換/減少衝突,語法不會是單反(1)。 檢查所有的狀態,如果沒有衝突,語法是SLR(1)。

1

是的,您在狀態中指定的條目絕對正確。

T->int.Y 
    Y->.*T 
    Y->. 

這是爲特定語法爲單反(1)解析器創建的DFA中的第5個狀態。

可能在Y->Ɛ中產生混淆。當您在擴充的作品中放置一個點時,例如S->A.B這意味着A已完成且B尚未完成(此處完成意味着解析進度)。同樣,如果你寫Y->.Ɛ,這意味着ɛ尚未結束,但我們也知道,ɛ爲空字符串,即沒有因此Y->.Ɛ被解釋爲Y->.

我創建了DFA(13個國)這個語法和發現給定語法的是單反(1),因爲沒有減少或減少衝突衝突