太笨了,看了好久才明白。。。
first集合沒有問題
follow集合:
以A -> aBb為例,如果b nullable,則follow(B)包括follow(A),原因很簡單,把A看成一個整體,當作為production的右式時它后面直接跟的元素自然也可能是B后面直接跟的元素,因為b可能為空。
理解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集合沒有問題
follow集合:
以A -> aBb為例,如果b nullable,則follow(B)包括follow(A),原因很簡單,把A看成一個整體,當作為production的右式時它后面直接跟的元素自然也可能是B后面直接跟的元素,因為b可能為空。
理解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)
就不難理解了