Header Ads Widget

Canonical Collection of LR(0) items

Canonical Collection of LR(0) items

An LR (0) item is a production G with dot at some position on the right side of the production.

LR(0) items is useful to indicate that how much of the input has been scanned up to a given point in the process of parsing.

In the LR (0), we place the reduce node in the entire row.

Example

Given grammar:

  1. S → AA  
  2. A → aA | b  

Add Augment Production and insert '•' symbol at the first position for every production in G

  1. S` → •S  
  2. S → •AA  
  3. A → •aA   
  4. A → •b  

I0 State:

Add Augment production to the I0 State and Compute the Closure

I0 = Closure (S` → •S)

Add all productions starting with S in to I0 State because "•" is followed by the non-terminal. So, the I0 State becomes

I0 = S` → •S
       S → •AA

Add all productions starting with "A" in modified I0 State because "•" is followed by the non-terminal. So, the I0 State becomes.

I0= S` → •S
       S → •AA
       A → •aA
       A → •b

I1= Go to (I0, S) = closure (S` → S•) = S` → S•

Here, the Production is reduced so close the State.

I1= S` → S•

I2= Go to (I0, A) = closure (S → A•A)

Add all productions starting with A in to I2 State because "•" is followed by the non-terminal. So, the I2 State becomes

I2 =S→A•A
       A → •aA
       A → •b

Go to (I2,a) = Closure (A → a•A) = (same as I3)

Go to (I2, b) = Closure (A → b•) = (same as I4)

I3= Go to (I0,a) = Closure (A → a•A)

Add productions starting with A in I3.

A → a•A
A → •aA
A → •b

Go to (I3, a) = Closure (A → a•A) = (same as I3)
Go to (I3, b) = Closure (A → b•) = (same as I4)

I4= Go to (I0, b) = closure (A → b•) = A → b•
I5= Go to (I2, A) = Closure (S → AA•) = SA → A•
I6= Go to (I3, A) = Closure (A → aA•) = A → aA•

Drawing DFA:

The DFA contains the 7 states I0 to I6.

Canonical Collection of LR(0) items

LR(0) Table

  • If a state is going to some other state on a terminal then it correspond to a shift move.
  • If a state is going to some other state on a variable then it correspond to go to move.
  • If a state contain the final item in the particular row then write the reduce node completely.

Canonical Collection of LR(0) items 1

Explanation:

  • I0 on S is going to I1 so write it as 1.
  • I0 on A is going to I2 so write it as 2.
  • I2 on A is going to I5 so write it as 5.
  • I3 on A is going to I6 so write it as 6.
  • I0, I2and I3on a are going to I3 so write it as S3 which means that shift 3.
  • I0, I2 and I3 on b are going to I4 so write it as S4 which means that shift 4.
  • I4, I5 and I6 all states contains the final item because they contain • in the right most end. So rate the production as production number.

Productions are numbered as follows:

  1. S  →      AA    ... (1)                              
  2. A   →     aA      ... (2)   
  3. A    →    b     ... (3)  
  • I1 contains the final item which drives(S` → S•), so action {I1, $} = Accept.
  • I4 contains the final item which drives A → b• and that production corresponds to the production number 3 so write it as r3 in the entire row.
  • I5 contains the final item which drives S → AA• and that production corresponds to the production number 1 so write it as r1 in the entire row.
  • I6 contains the final item which drives A → aA• and that production corresponds to the production number 2 so write it as r2 in the entire row.

Post a Comment

0 Comments