Тема 14: Удаление левой рекурсии в контекстно свободных грамматиках Определение: Грамматика, имеющая правила вида A->Aα называется грамматикой с левой рекурсией. Для приведения грамматики в одну из нормальных форм часто необходимо избавиться от левой рекурсии. Теорема: Для любой контекстно-свободной грамматики можно построить эквивалентную КСГ, которая не содержит левую рекурсию. Алгоритм: Пусть дан нетерминал A и правила, имеющие общий вид A->, где (VTVN)*. Эти правила можно разделить на 2 вида: 1. Правила с левой рекурсией A->A1, A->A2, ..., A->Am. 2. Правила без левой рекурсии и имеющие общую форму A->β1, A->β2,..., A->βn. Общий вид этих правил будет: 1. A->Аi, i[1,m] 2. A->βj, j [1,n] В правилах второго типа нет левой рекурсии. Меняем правила грамматики. Вместо этих правил напишем новые. Возможны 2 варианта: I вариант (без -продукций) для всех i и для всех j, выше приведенные правила заменяются на: 1. A->jY 2. A->j 3. Y->i 4. Y->iY, где Y новый нетерминальный символ. II варинат (с -продукциями) для всех i и для всех j 1. A->jY 2. Y-> 3. Y->iY, где Y новый нетерминальный символ. Используя любой из этих двух методов граматика будет без левой рекурсии.