Chapter 4: Syntax Analysis

Example

Construct sets of LR(1) items for the grammar on previous slide

 

I0 : S ' .S, $
  S .CC, $
  C .cC, c /d
  C .d, c /d
I1 : goto(I0 ,S)  
  S ' S., $
I2 : goto(I 0 ,C)  
  S C.C, $
  C .cC, $
  C .d, $
I3 : goto(I 0 ,c)  
  C c.C, c/d
  C .cC, c/d
  C .d, c/d
I 4 : goto(I 0 ,d)  
  C d., c/d
I5 : goto(I 2 ,C)  
  S CC., $
I6 : goto(I 2 ,c)  
  C c.C, $
  C .cC, $
  C .d, $
I 7 : goto(I 2 ,d)  
  C d., $
I 8 : goto(I 3 ,C)  
  C cC., c/d
I9 : goto(I 6 ,C)  
  C cC., $

To construct sets of LR(1) items for the grammar given in previous slide we will begin by computing closure of {[S ´ .S, $]}.

To compute closure we use the function given previously.

In this case α = ε , B = S, ß =ε and a=$. So add item [S .CC, $].

Now first(C$) contains c and d so we add following items

we have A=S, α = ε , B = C, ß=C and a=$

Now first(C$) = first(C) contains c and d

so we add the items [C .cC, c], [C .cC, d], [C .dC, c], [C .dC, d].

Similarly we use this function and construct all sets of LR(1) items.