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

  • 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'> и преобразуем правила так:

    Заменяя все правила с левой рекурсией в Г описанным способом, получим грамматику Г',
    причем L(Г)=L(Г') , поскольку каждая цепочка, выведенная в грамматике Г, может быть
    построена в грамматике Г'. Рассмотрим построение выводов в Г и Г'. В грамматике Г вывод
    цепочки имеет вид: в грамматике Г' эта же цепочка выводится так:
      Чтобы показать технику преобразования, рассмотрим пример. Требуется преобразовать
    грамматику Г1. 9 (рассмотренную ранее), которая задана схемой:
      Следуя описанному способу, правила  <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, имеющую схему: не содержащую леворекурсивных правил.


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

  •  
    Hosted by uCoz