Но в целом - несложное упражнение: по грамматике, в которой есть правила с пустой правой частью, постройте грамматику, порождающую тот же язык, в которой таких правил уже нет.
Пусть есть основной алфавит

, вспомогательный алфавит

и грамматика

. Для начала расширим вспомогательный алфавит на один символ

. Получим новый вспомогательный алфавит

. Теперь сделаем из грамматики

грамматику

без правил с пустой левой частью.
Идея в том, чтобы везде в левых и правых частях правил грамматики

заменить все вхождения пустой цепочки на

. А именно, всякое правило грамматики

с непустой левой и правой частью имеет вид

, где

- символы объединенного алфавита

. Заменим их на правила вида

. Правила с пустой левой частью вида

, где

- пустая цепочка, заменим на правила вида

. Правила с пустой правой частью вида

заменим на правила вида

.
Добавим в

еще два правила:
1)

, где

- начальный символ. Это правило нужно, чтобы вывести левую часть любого правила

из начального символа.
2)

. Это правило нужно, чтобы на последнем шаге вывода устранить вспомогательный символ

.
Докажем, что грамматики

и

порождают один и тот же язык. Рассмотрим произвольный полный вывод в грамматике

:

Ему соответствует полный вывод в грамматике

:

.
Обратно, любой полный вывод в грамматике

имеет вид

, и ему соответствует полный вывод

в грамматике

.
Вот теперь, кажется, все правильно.