Я написал следующую грамматику:Может ли грамматика SLR иметь пустое производство?
S->S (S) S
S->e
е означает «пустая строка»
Так язык эта грамматика признает включает в себя все строки с соответствием левой и правой скобкой, как(), (()), (()()) и т.д.
И эта грамматика не зеркальная, вот как я построить SLR синтаксического анализа таблицы:
Augment это г rammar:
S1-> S S-> S (S) S S-> е
Затем построить LR (0) автомат для него:
I0: S1->. . S S -> S (S) S S -> е
I1:. S1-> S. S-> S. (S) S
...
Пожалуйста, обратите внимание, что для I0, нет никакого смещения или уменьшить действие для ввода символа '(', который является первым знаком . любая строка эта грамматика порождает
Так зеркальная синтаксического анализа таблицы будет генерировать ошибку, так как на государственном I0, он не знает, что делать при разборе строки:. (())
Мой вопрос:
Каков виновник, который делает эту грамматику НЕ SLR? Это пустая строка? То есть: S-> e. ?
И в общем смысле, может ли грамматика SLR иметь пустые постановки? например, S-> e в этом примере. Спасибо.