假設我有以下CFG:如何找到遞歸語法的FIRST和FOLLOW集?
S-> AACD | BcAe
A-> B | EPSILON
B-> cf | d
C-> FE
現在我敷在CFG的第一個規則:
FIRST(S)= FIRST(AACD)U FIRST(BcAe)
= {A} U FIRST(BcAe)
= {A} U FIRST(B) - {EPSILON} U FIRST(CAE)
= {A} U FI RST(B) - {EPSILON} U {C}
= {A} U FIRST(CF)U FIRST(d) - {EPSILON} U {C}
= {A,F,d, C,EPSILON}
FIRST(A)= FIRST(b)U FIRST(EPSILON)= = {b,EPSILON}
FIRST(b)= FIRST(CF)U FIRST(d)= {d中,f}
FIRST(C)= FIRST(FE)= {F}
現在我申請對CFG的FOLLOW規則:
FOLLOW(S)= {$}
FOLLOW(A)= {C,E}
FOLLOW(B)= {C}
FOLLOW(C)= {f}
有什麼不對嗎?如果不對,請告訴我該怎麼做。
「我做完了我的功課嗎?」與堆棧溢出不匹配。如果你有一個關於算法的具體問題,你可以試着問一下,儘管這樣的問題很可能不在SO的範圍內,因爲它與編程很少或者沒有關係。 – rici
@SourodipKundu這是錯的。它不是答案。 – Billa
@SourodipKundu請檢查生產是否與我的問題相同。並且由於'C'在生產體S-> aACD中,'FOLLOW(C)'是'FIRST(D)'。由於'FIRST(D)'是'EPSILON',所以'EPSILON'替代'S-> aACD'中的'D'。所以它變成'S-> aAC'然後取'FOLLOW(C)',然後變成'FOLLOW(S)'這是'$'。我認爲你缺乏基礎知識,請參考我在答案中提出的視頻。 – Billa