A4 solution

Augmented grammar

NumberProduction
0S′ → S
1S → X c Y
2Y → X Y
3Y → b X
4X → a X
5X → a

Words generated with this grammar are a sequence of one or more ‘a’s, followed by a ‘c’, followed by zero or more ‘a’s, followed by a ‘b’, followed by one or more ‘a’s.

The corresponding regular expression is a+ca*ba+.

FIRST and FOLLOW sets

FIRST(S) = { a }
FIRST(X) = { a }
FIRST(Y) = { a, b }
FOLLOW(S) = { $ }
FOLLOW(X) = { a, b, c, $ }
FOLLOW(Y) = { $ }

Canonical collection of LR(0) items:

I0={
S′ → ∙ S
S → ∙ X c Y
X → ∙ a X
X → ∙ a }
GOTO(I0, S)=I1={
S′ → S ∙ }
GOTO(I0, X)=I2={
S → X ∙ c Y }
GOTO(I0, a)=I3={
X → a ∙ X
X → a ∙
X → ∙ a X
X → ∙ a }
GOTO(I2, c)=I4={
S → X c ∙ Y
Y → ∙ X Y
Y → ∙ b X
X → ∙ a X
X → ∙ a }
GOTO(I3, X)=I5={
X → a X ∙ }
GOTO(I3, a)=I3
GOTO(I4, X)=I6={
Y → X ∙ Y
Y → ∙ X Y
Y → ∙ b X
X → ∙ a X
X → ∙ a }
GOTO(I4, Y)=I7={
S → X c Y ∙ }
GOTO(I4, a)=I3
GOTO(I4, b)=I8={
Y → b ∙ X
X → ∙ a X
X → ∙ a }
GOTO(I6, X)=I6
GOTO(I6, Y)=I9={
Y → X Y ∙ }
GOTO(I6, a)=I3
GOTO(I6, b)=I8
GOTO(I8, X)=I10={
Y → b X ∙ }
GOTO(I8, a)=I3

SLR parsing table

STATE ACTION GOTO
a b c $ S X Y
0 s3 1 2
1 acc
2 s4
3 s3/r5 r5 r5 r5 5
4 s3 s8 6 7
5 r4 r4 r4 r4
6 s3 s8 6 9
7 r1
8 s3 10
9 r2
10 r3

Parsing aacba

ACTION STACK INPUT
start 0 aacba$
s3 0 a 3 acba$
s3 0 a 3 a 3 cba$ ...or... r5 0 X 2 acba$
r5 0 a 3 X 5 cba$ err
r4 0 X 2 cba$
s4 0 X 2 c 4 ba$
s8 0 X 2 c 4 b 8 a$
s3 0 X 2 c 4 b 8 a 3 $
r5 0 X 2 c 4 b 8 X 10 $
r3 0 X 2 c 4 Y 7 $
r1 0 S 1 $
acc