假設我有以下語法:SLR(1)語法分析器小量
ë - > TX
筆 - >(E)| int Y
X - > + E | ε
Y - > * T | ε
建設項目集合我得到的狀態像這樣的:
筆 - > int類型。 Y
Y - >。 * T
Y - >。
這個狀態是否合適?也就是說,語法是SLR(1)還是不是? 謝謝
假設我有以下語法:SLR(1)語法分析器小量
ë - > TX
筆 - >(E)| int Y
X - > + E | ε
Y - > * T | ε
建設項目集合我得到的狀態像這樣的:
筆 - > int類型。 Y
Y - >。 * T
Y - >。
這個狀態是否合適?也就是說,語法是SLR(1)還是不是? 謝謝
您必須構造FOLLOW集並查看FOLLOW(Y)是否包含int或*。如果是這種情況,會出現轉換/減少衝突,語法不會是單反(1)。 檢查所有的狀態,如果沒有衝突,語法是SLR(1)。
是的,您在狀態中指定的條目絕對正確。
T->int.Y
Y->.*T
Y->.
這是爲特定語法爲單反(1)解析器創建的DFA中的第5個狀態。
可能在Y->Ɛ
中產生混淆。當您在擴充的作品中放置一個點時,例如S->A.B
這意味着A已完成且B尚未完成(此處完成意味着解析進度)。同樣,如果你寫Y->.Ɛ
,這意味着ɛ尚未結束,但我們也知道,ɛ爲空字符串,即沒有因此Y->.Ɛ
被解釋爲Y->.
我創建了DFA(13個國)這個語法和發現給定語法的是單反(1),因爲沒有減少或減少衝突衝突。