Удаление косвенной левой рекурсии

У меня есть интересная проблема непрямой рекурсии, которую, я думаю, я решил, но я не совсем уверен, что она правильная.

Начальная грамматика:

A-> Bxy | x

B-> CD

C-> A | c

D-> d

Мое решение состояло в том, чтобы сначала развиваться на A, получая:

A -> ADxy | cDxy | x

Теперь, имея это, я вижу, где у меня есть рекурсия, и я удаляю ее, получая:

A-> cDxyA' | xA'

A'-> DxyA' | empty

Полное решение будет тогда

A-> cDxyA' | xA'

A'-> DxyA' | empty

B-> CD

C-> A | c

D-> d

Правильна ли эта грамматика?

0 ответов

Другие вопросы по тегам