Presentation is loading. Please wait.

Presentation is loading. Please wait.

Notes on First and Follow Written by David Walker Edited by Phil Sweany.

Similar presentations


Presentation on theme: "Notes on First and Follow Written by David Walker Edited by Phil Sweany."— Presentation transcript:

1 Notes on First and Follow Written by David Walker Edited by Phil Sweany

2 Computing Nullable Sets Non-terminal X is Nullable only if the following constraints are satisfied (computed using iterative analysis) –base case: if (X := ) then X is Nullable –inductive case: if (X := ABC...) and A, B, C,... are all Nullable then X is Nullable

3 Computing First Sets First(X) is computed iteratively –base case: if T is a terminal symbol then First (T) = {T} –inductive case: if X is a non-terminal and (X:= ABC...) then –First (X) = First (X) U First (ABC...) where First(ABC...) = F1 U F2 U F3 U... and »F1 = First (A) »F2 = First (B), if A is Nullable »F3 = First (C), if A is Nullable & B is Nullable »...

4 Computing Follow Sets Follow(X) is computed iteratively –base case: initially, we assume nothing in particular follows X –(Follow (X) is initially { }) –inductive case: if (Y := s1 X s2) for any strings s1, s2 then –Follow (X) = First (s2) U Follow (X) if (Y := s1 X s2) for any strings s1, s2 then –Follow (X) = Follow(Y) U Follow (X), if s2 is Nullable

5 building a predictive parser Z ::= X Y Z Z ::= d Y ::= c Y ::= X ::= a X ::= b Y e nullablefirstfollow Z Y X

6 building a predictive parser Z ::= X Y Z Z ::= d Y ::= c Y ::= X ::= a X ::= b Y e nullablefirstfollow Zno Yyes Xno base case

7 building a predictive parser Z ::= X Y Z Z ::= d Y ::= c Y ::= X ::= a X ::= b Y e nullablefirstfollow Zno Yyes Xno after one round of induction, we realize we have reached a fixed point

8 building a predictive parser Z ::= X Y Z Z ::= d Y ::= c Y ::= X ::= a X ::= b Y e nullablefirstfollow Znod Yyesc Xnoa,b base case (note, first of Y should include empty string)

9 building a predictive parser Z ::= X Y Z Z ::= d Y ::= c Y ::= X ::= a X ::= b Y e nullablefirstfollow Znod,a,b Yyesc Xnoa,b after one round of induction, no fixed point

10 building a predictive parser Z ::= X Y Z Z ::= d Y ::= c Y ::= X ::= a X ::= b Y e nullablefirstfollow Znod,a,b Yyesc Xnoa,b after two rounds of induction, no more changes ==> fixed point

11 building a predictive parser Z ::= X Y Z Z ::= d Y ::= c Y ::= X ::= a X ::= b Y e nullablefirstfollow Znod,a,b{ } Yyesc{ } Xnoa,b{ } base case

12 building a predictive parser Z ::= X Y Z Z ::= d Y ::= c Y ::= X ::= a X ::= b Y e nullablefirstfollow Znod,a,b{ } Yyesce,d,a,b Xnoa,bc,d,a,b after one round of induction, no fixed point

13 building a predictive parser Z ::= X Y Z Z ::= d Y ::= c Y ::= X ::= a X ::= b Y e nullablefirstfollow Znod,a,b{ } Yyesce,d,a,b Xnoa,bc,d,a,b after two rounds of induction, fixed point (but notice, computing Follow(X) before Follow (Y) would have required 3 rd round)


Download ppt "Notes on First and Follow Written by David Walker Edited by Phil Sweany."

Similar presentations


Ads by Google