I'm trying to understand how LR1 Parsers work but I came up with a strange problem: What if the grammar contains Epsilons? For instance: if I have the grammar:
S -> A
A -> a A | B
B -> a
It's clear how to start:
S -> .A
A -> .a A
A -> .B
... and so on
but I don't know how to do it for such a grammar:
S -> A
A -> a A a | \epsilon
Is it correct to do:
S -> .A
A -> .a A a
( A -> .\epsilon )
And then make this State in the DFA accepting?
Any help would really be appreciated!