Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Доки / T_ALG / 1 / FOMICHEV / section2 / Part25

.htm
Скачиваний:
7
Добавлен:
17.04.2013
Размер:
8.91 Кб
Скачать

Part25 Пред.Страница   След.Страница   Раздел   Содержание

2.5 Исключение леворекурсивных правил.

  Определение. Правило вида <A>  ® a <A> , где A О VA , a О(Vт ИVA) * , называется праворекурсивным, а правило вида <A>  ® <A>a - леворекурсивным.   Утверждение. Для каждой КС-грамматики Г, содержащей леворекурсивные правила, можно 

построить эквивалентную грамматику Г', не содержащую леворекурсивных правил. Способ построения эквивалентной грамматики заключается в следующем. Допустим, что исходная грамматика Г содержит

правила:

                       <A> ® <A>a 1 | <A>a 2 | ... |<A>a m| ,

где ни одна цепочка b не начинается с <A> и a1, b1О(Vт ИVA) * .

Введем новый нетерминал <A'> и преобразуем правила так: <A> ® b 1 | b 2 |...| b n | b 1<A'> | b 2<A'>|...| b n<A'>,

<A'> ®a 1 | a 2 |...| a m| a 1<A'> |a 2<A'>|...|a m<A'>. Заменяя все правила с левой рекурсией в Г описанным способом, получим грамматику Г',

причем L(Г)=L(Г') , поскольку каждая цепочка, выведенная в грамматике Г, может быть

построена в грамматике Г'. Рассмотрим построение выводов в Г и Г'. В грамматике Г вывод

цепочки имеет вид: < A> Ю   <A>a 1 Ю <A>a 1a 1 Ю   <A>a 1a 1a 1 Ю   b 1a 1a 1a 1, в грамматике Г' эта же цепочка выводится так:

  <A> Ю b 1<A'> Ю b 1a 1<A'> Ю b 1a 1a 1<A'>  Ю b 1a 1a 1a 1. Чтобы показать технику преобразования, рассмотрим пример. Требуется преобразовать

грамматику Г1. 9 (рассмотренную ранее), которая задана схемой:

  Г1. 9:   R={<E> ®  <E> + <T> | <T>,

                  < T> ®  <T> * <F> | <F>,

                   <F> ® ( <E> ) | a}. Следуя описанному способу, правила  <E>  ® <E> + <T> | <T> преобразуем в правила

<E>® <T> | <T><E'> и  <E'>  ® +<T> | +<T><E'> , а правила <T> ® <T> * <F> | <F> преобразуем в правила <T>  ® <F> | <F><T'> и  <T'>  ® *< F> | * <F><T'>.

В результате получаем грамматику Г'1. 9, имеющую схему: Г'1. 9 :          R'= { <E> ® < T>, <E>  ® <T><E'>,

< E'>® + <T>,

<E'> ® + <T><E'>,

<T>  ® <F>,

<T>  ® <F><T'>,

<T'> ® * <F>,

<T'> ® * <F><T'>,

< F> ® a,

 <F> ® (<E>) },

  не содержащую леворекурсивных правил. Пред.Страница   След.Страница   Раздел   Содержание

 

Соседние файлы в папке section2