總算弄明白生成first和follow集合的算法了
Posted on 2007-09-23 22:22 ZelluX 閱讀(2442) 評(píng)論(2) 編輯 收藏 所屬分類: Courses太笨了,看了好久才明白。。。
first集合沒(méi)有問(wèn)題
follow集合:
以A -> aBb為例,如果b nullable,則follow(B)包括follow(A),原因很簡(jiǎn)單,把A看成一個(gè)整體,當(dāng)作為production的右式時(shí)它后面直接跟的元素自然也可能是B后面直接跟的元素,因?yàn)閎可能為空。
理解follow集合的定義后,虎書上給出的算法
if Yi+1 ... Yk are all nullable
then FOLLOW(Yi) = FOLLOW(Yi) U FOLLOW(X)
if Yi+1 ... Yj-1 are all nullable
then FOLLOW(Yi) = FOLLOW(Yi) U FIRST(Yj)
就不難理解了
first集合沒(méi)有問(wèn)題
follow集合:
以A -> aBb為例,如果b nullable,則follow(B)包括follow(A),原因很簡(jiǎn)單,把A看成一個(gè)整體,當(dāng)作為production的右式時(shí)它后面直接跟的元素自然也可能是B后面直接跟的元素,因?yàn)閎可能為空。
理解follow集合的定義后,虎書上給出的算法
if Yi+1 ... Yk are all nullable
then FOLLOW(Yi) = FOLLOW(Yi) U FOLLOW(X)
if Yi+1 ... Yj-1 are all nullable
then FOLLOW(Yi) = FOLLOW(Yi) U FIRST(Yj)
就不難理解了