The Gateway to Computer Science Excellence
+25 votes
2.2k views

Choose the correct alternatives (more than one may be correct) and write the corresponding letters only:

For a context free grammar, FOLLOW(A) is the set of terminals that can appear immediately to the right of non-terminal $A$ in some "sentential" form. We define two sets LFOLLOW(A) and RFOLLOW(A) by replacing the word "sentential" by "left sentential" and "right most sentential" respectively in the definition of FOLLOW (A).

  1. FOLLOW(A) and LFOLLOW(A) may be different.
  2. FOLLOW(A) and RFOLLOW(A) are always the same.
  3. All the three sets are identical.
  4. All the three sets are different.
in Compiler Design by
edited by | 2.2k views

1 Answer

+51 votes
Best answer

Ans - a,b, LFollow may be different but RFollow and Follow will be same

Consider a Grammar - 

$S \rightarrow AB$

$A \rightarrow  a$

$B \rightarrow b$


Now only string derivable is $\{ ab \}$.

Let's find Follow(A) in all cases :

  1. Follow(A) - set of terminals that can appear immediately to the right of non-terminal $A$ in some "sentential " form
    $S \rightarrow AB \rightarrow Ab  \rightarrow ab$ 

          Here, we notice only '$b$' can appear to the right of $A$.

          Follow$(A) = \{ b \}$


  1. LFollow(A) - set of terminals that can appear immediately to the right of non-terminal $A$ in some "left sentential" form
    $S \rightarrow AB \rightarrow aB  \rightarrow ab$ 

          Here, we notice no terminal  can appear to the right of $A$.

          LFollow$(A) = \{\}$


  1. RFollow(A) - set of terminals that can appear immediately to the right of non-terminal $A$ in some "right most sentential" form
    $S \rightarrow AB  \rightarrow Ab  \rightarrow ab$ 

          Here, we notice only '$b$' can appear to the right of $A$.

          RFollow$(A) = \{ b \}$

by
edited by
+4
Solving for an instance does not prove the general case, right? Is there some way to prove for the general case?
+2
If I use below grammar, I get three different sets-

S->AaAb
A->d

Follow(A)= {a,b}

LFollow(A)={b}

RFollow(A)={a}

I think except C, all remaining options are correct.

Although for a specific sentence like S->ab (any derivation gives same sentence), the given ans is right.

0
so what is the final answer ??
0
@Arjun sir can you please have look at this question and answer?
+2
@dan31

You are wrong, in your example, in all 3 cases follow(A) will be {a, b} only.
0
@vishalshrm539 how lfollow is {a,b}. I m getting {b}
0

@dan31

how you are getting Lfollow(A) ={b}.how is the procedureto derive

+1
Plz explain..my.Rfollow and Lfollow concept is not clear????

In above solution( Lfollow) how immediate right of A (non terminal is null ...)
+2

@dan31 in your example given, Follow(A), LFollow(A), RFollow(A) should be:-

S->AaAb
A->d

Follow(A)= {a,b}

LFollow(A)={a}

RFollow(A)={a,b}

@Arjun sir, correct me if I am wrong.

 

Related questions

Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true
52,345 questions
60,497 answers
201,862 comments
95,319 users