Compiler Design and Construction - Old Questions

5.  Construct the grammar:


Compute the complete LR(0) collection of item set from above grammar.

6 marks | Asked in 2069

The augmented grammar of given grammar is;

    E’→E

    E→E+T | T

    T→T*F | F

    F→ (E) | id

Next, we obtain the canonical collection of sets of LR(0) items, as follows,

I0 = closure ({E‘ → •E})

    = {E‘ → •E, E → •E + T, E → •T, T → •T * F, T → •F, F → • (E), F → •id}

goto(I0, E) = closure({E‘ → E•, E → E •+ T}) = {E‘ → E•, E → E •+ T} = I1

goto(I0, T) = closure({E → T•, T → T •* F}) = { E → T•, T → T •* F } = I2

goto(I0, F) = closure({T → F•}) = {T → F•} = I3

goto(I0, ( ) = closure({F → (•E)}) = {F → (•E), E → •E + T, E → •T, T → •T * F, T → •F, F → • (E), F → •id} = I4

goto(I0, id ) = closure({F → id•}) = {F → id•} = I5

goto(I1, + ) = closure({E → E + •T}) = {E → E +• T, T → •T * F, T → •F, F → • (E), F → •id} = I6

goto(I2, * ) = closure({T → T * •F}) = {T → T * •F, F → • (E), F → •id} = I7

goto(I4, E) = closure({F → (E•), E → E•+ T}) = {F → (E•), E → E•+ T } = I8

goto(I4, T) = closure({E → T•, T → T• * F}) = {E → T• , T → T•*F}= I2

goto(I4, F) = closure({T → F•}) = {T → F•} = I3

goto(I4, () = closure({F → •(E)} = I4

goto(I4, id) = closure({F → id•}) = I5

goto(I6, T) = closure({E → E +T•, T → T•* F}) = {E → E +T•, T → T•* F} = I9

goto(I6, F) = closure ({T→ F•}) = I3

goto (I6, () = closure ({F → (• E)} = I4

goto(I6, id) = closure({F → id•}) = I5

goto(I7, F ) = closure({T → T * F•})= {T → T * F•} = I10

goto( I7, () = closure({F → •(E)} = I4

goto(I7, id) = closure({F → id•}) = I5

goto(I8, ) ) = closure({F → (E) •}) = {F → (E) •} = I11

goto(I8, +) = closure({ E → E+•T} ) = I6

goto(I9, *) = closure({T → T*•F}) = { T → T*•F, F→ •(E), F→ •id } = I7

Now,

The canonical collection of set of LR(0) items for given grammar are: