first and follow

13
Notes on First and Follow Written by Ashok Kumar Pachauri ITM Aligarh

Upload: rvarshneyp

Post on 28-Jul-2015

64 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: First and follow

Notes on First and Follow

Written by Ashok Kumar Pachauri

ITM Aligarh

Page 2: First and follow

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

Page 3: First and follow

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» ...

Page 4: First and follow

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

Page 5: First and follow

building a predictive parser

Z ::= X Y ZZ ::= d

Y ::= cY ::=

X ::= aX ::= b Y e

nullable first follow

Z

Y

X

Page 6: First and follow

building a predictive parser

Z ::= X Y ZZ ::= d

Y ::= cY ::=

X ::= aX ::= b Y e

nullable first follow

Z no

Y yes

X no

base case

Page 7: First and follow

building a predictive parser

Z ::= X Y ZZ ::= d

Y ::= cY ::=

X ::= aX ::= b Y e

nullable first follow

Z no

Y yes

X no

after one round of induction, we realize we have reached a fixed point

Page 8: First and follow

building a predictive parser

Z ::= X Y ZZ ::= d

Y ::= cY ::=

X ::= aX ::= b Y e

nullable first follow

Z no d

Y yes c

X no a,b

base case (note, first of Y should include empty string)

Page 9: First and follow

building a predictive parser

Z ::= X Y ZZ ::= d

Y ::= cY ::=

X ::= aX ::= b Y e

nullable first follow

Z no d,a,b

Y yes c

X no a,b

after one round of induction, no fixed point

Page 10: First and follow

building a predictive parser

Z ::= X Y ZZ ::= d

Y ::= cY ::=

X ::= aX ::= b Y e

nullable first follow

Z no d,a,b

Y yes c

X no a,b

after two rounds of induction, no more changes ==> fixed point

Page 11: First and follow

building a predictive parser

Z ::= X Y ZZ ::= d

Y ::= cY ::=

X ::= aX ::= b Y e

nullable first follow

Z no d,a,b { }

Y yes c { }

X no a,b { }

base case

Page 12: First and follow

building a predictive parser

Z ::= X Y ZZ ::= d

Y ::= cY ::=

X ::= aX ::= b Y e

nullable first follow

Z no d,a,b { }

Y yes c e,d,a,b

X no a,b c,d,a,b

after one round of induction, no fixed point

Page 13: First and follow

building a predictive parser

Z ::= X Y ZZ ::= d

Y ::= cY ::=

X ::= aX ::= b Y e

nullable first follow

Z no d,a,b { }

Y yes c e,d,a,b

X no a,b c,d,a,b

after two rounds of induction, fixed point (but notice, computing Follow(X) before Follow (Y) would have required 3rd round)