Одна ошибка в том, что вы удалили переход S --> ɛ
. Вам это нужно (S --> ɛ
специально разрешено в CNF, хотя AnyNonTerminalOtherThanS --> ɛ
нет).
Тогда правило [A] --> [a]
должно быть [A] --> a
, потому что если у вас есть только один элемент в RHS, он должен быть терминалом.
[aA] --> [a] A
[Sb] --> s [b]
Эти два кажутся опечатками, поскольку A
и s
не существует. Вы, вероятно, имели в виду:
[aA] --> [a] [A]
[Sb] --> [S] [b]
Кроме того, то, что у вас есть, правильно.