in Compiler Design retagged by
16,977 views
16 votes
16 votes

Consider the grammar given below:

  • $S \rightarrow Aa$
  • $A \rightarrow BD$
  • $B \rightarrow b \mid \epsilon $
  • $D \rightarrow d \mid \epsilon $


Let $a,b,d$ and $\$$ be indexed as follows:$$\begin{array}{|l|l|l|l|} \hline a & b & d & \$ \\ \hline 3 & 2 & 1 & 0 \\ \hline \end{array}$$Compute the FOLLOW set of the non-terminal B and write the index values for the symbols in the FOLLOW set in the descending order.(For example, if the FOLLOW set is $(a,b,d, \$)$ , then the answer should be $3210$)

in Compiler Design retagged by
by
17.0k views

4 Comments

first(S) = first (A)= first(B) = b , epsilon

Now substitute epsilon in place of B in A-> BD

So first(A) = first(D) = d, epsilon

So this means A can generate b,d, epsilon.

Now if we substitute epsilon in S->Aa then we can get first(S) = a

Note that we are not writing epsilon in first(S) because S can't generate epsilon.

Hence first(S) = {a,b,d}
1
1
I confused, on that because I thought $'S'$ can generate $\epsilon.$

Now it is clear for me,thanks
0
0
Same bro
0
0

3 Answers

26 votes
26 votes
Best answer
For $\text{Follow(B)} \implies \text{First(D)} = \{ d, \epsilon \}$

Put $\epsilon$ in $II$ production

$\text{Follow (B)} = \text{ Follow (A)} = \{ a\}$

$\text{Follow (B)} = \{ d,a \}$

According to the question writing Follow set in decreasing order:$$\begin{array}{|l|l|} \hline a & d \\ \hline 3 & 1 \\ \hline \end{array}$$Hence $31$ is correct answer
edited by

4 Comments

Thanks

0
0

@Rishav_Bhatt can the answer be  13 also?

0
0

@Hrithik Vashishtha If the question had asked in ascending then the answer would have been 13 but the question had asked in descending order that’s why the answer can’t be 13.

0
0
8 votes
8 votes
Follow of B={d,a}

D is right of B so we take terminal first of D that is d if D is € in such case follow of B=follow of A that is a

So answer is ad = 31
2 votes
2 votes

Answer is: 31

1. Here B is in the right side of the Production Rule:

$A\rightarrow BD$                 $\therefore FOLLOW(B)= FIRST(D)$ 

$FIRST(D)=d$ (Therfore it is in $FOLLOW(B)$)

Finally Putting $D\rightarrow \varepsilon$ in the Production $A\rightarrow BD$   then $FOLLOW(B)=FOLLOW(A)$

$FOLLOW(A)=a$ (From the Production rule $S\rightarrow Aa$)

$\therefore FOLLOW(B)= (d,a)$

As we have to write answer in the Decreasing order of INDEX (a,d) $\rightarrow$ (31)

edited by
Answer:

Related questions