Я пытаюсь понять, как работают синтаксические анализаторы LR1, но столкнулся со странной проблемой: что, если грамматика содержит эпсилоны? Например: если у меня есть грамматика:
S -> A
A -> a A | B
B -> a
Понятно, как начать:
S -> .A
A -> .a A
A -> .B
... и так далее
но я не знаю, как это сделать для такой грамматики:
S -> A
A -> a A a | \epsilon
Правильно ли делать:
S -> .A
A -> .a A a
( A -> .\epsilon )
А потом сделать это состояние в DFA принимающим?
Любая помощь будет действительно оценена!
Goto
, вы сделаетеGoto(Io, \epsilon)
, гдеIo
это первое состояние? - person Oscar Mederos   schedule 28.06.2011