Мне нужно преобразовать линейную правую грамматику в конечный автомат. Грамматика
S —> bA|aD|bC
А —> aC|bA
C —> bB|aA|b
B —> aD|bC|a
D —> aA|aC
Обычно задача решается следующим образом: Каждому состоянию сопоставляем нетерминал. Если есть переход из X в Y по состоянию и, добавляем правило X → aY. Чтобы добавить правило конечного состояния X → ε. Для ε-переходов - X → Y.
Например:
A → aB | cC
B → bD | cE
C → ε
D → aB | cC
E → aB | cC
Вопросы.
- Как быть, если есть связь А и А, например, А -> аС | ба.
- Как работать со структурами C -> bB | аА | b, конец только b.