GATE CSE
First time here? Checkout the FAQ!
x
+1 vote
221 views

Consider the following translation scheme. 

S→ER

R→∗E{print(′∗′);}R∣ε

E→F+E{print(′+′);}∣F

F→S∣id{print(id.value);}

Here id is a token that represents an integer and id.value represents the corresponding integer value. For an input '2 * 3 + 4',  this translation scheme prints 

(A) 2 * 3 + 4  
(B) 2 * +3 4  
(C) 2 3 * 4 + 
(D) 2 3 4+*

My try: I figured out the following tree and found the answer to be (C) i.e. 23*4+. But the given answer in (D). 
Am I missing something?

asked in Compiler Design by Active (1.7k points)   | 221 views

i think D. is ans since + having higher precedency over * ...In ur tree * having higher precedence than + ...

The precedence is enforced by grammar, so if I am able to draw the tree using the grammar shouldn't that be correct?
My understanding is that if + has higher precedence than * then using that using no tree should give higher precedence to *. Is that wrong to assume?
Yes we should not assume that

3 Answers

0 votes
answered by Loyal (4.6k points)  
0 votes
Yes , Answer is D
answered by Junior (803 points)  
0 votes
This grammer is actually left recursive removed grammer of S-->E*E|E  E-->F+E|F and so on. So + have highest precedence than * . So although the grammer give two parse tree for the given i/p string.. The correct ans should be which allow + have higher precedence than * .. i.e Option D.
answered by Active (1.7k points)  


Top Users Sep 2017
  1. Habibkhan

    8796 Points

  2. rishu_darkshadow

    3572 Points

  3. Warrior

    2914 Points

  4. Arjun

    2840 Points

  5. A_i_$_h

    2550 Points

  6. manu00x

    2268 Points

  7. nikunj

    1990 Points

  8. Bikram

    1874 Points

  9. makhdoom ghaya

    1820 Points

  10. SiddharthMahapatra

    1718 Points


26,346 questions
33,927 answers
80,524 comments
31,231 users