Скачиваний:
5
Добавлен:
01.05.2014
Размер:
9.91 Кб
Скачать

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

    3.4.2 Построение функции ПЕРВ(µ)  

  Значение функции ПЕРВ(m) можно определить пользуясь следующими правилами:

1)  Если цепочка µ начинается терминальным символом и имеет вид bµ', то функция

  ПЕРВ(µ) = {b},  

2)  Если цепочка µ является пустой цепочкой, µ = $, то функция

  ПЕРВ(µ) = $,

  3)   Если цепочка µ начинается нетерминальным символом <B> и имеет вид <B>µ', а в схеме грамматики имеется n  правил, в любой части которых находится символ <B>:

  <B>  ® a1 | a2 | ... | an , и, если не существует вывода <B> ==>* $, то функция ПЕРВ(<B>µ') представляет собой объединение множеств:

  ПЕРВ(<B>µ') = ПЕРВ(a1) И ПЕРВ (a2) И...ИПЕРВ(an), 4)   Если цепочка µ начинается нетерминальным символом и имеет вид <B>µ', в схему грамматики входят n правил вида

  <B>  ® a1 | a2 | ... | an , и <B> является аннулирующим нетерминалом, т.е. существует  <B> ==> *$, то функция   ПЕРВ(<B>µ')=ПЕРВ(µ') И ПЕРВ(a 1)И ПЕРВ(a 2) И...И ПЕРВ(a n). В качестве примера выполним вычисление функции ПЕРВ для правил следующей грамматики:  

   Г3. 2 :     R = {      (1) <A>  ® <B><C>c, (2) <A>  ® g<D><B>,

(3) <B>  ® $,

(4) <B>  ® b<C><D><E>,

(5) <C>  ® <D>a<B>,

(6) <C>  ® ca,

(7) <D>  ® $,

(8) <D>  ® d<D>,

(9) <E>  ® g<A>f,

(10) <E>  ® c   }.   Вначале найдем значения функции для правых частей правил (2), (4), (6), (8), (9) , (10) , начинающихся терминальными символами: ПЕРВ(g,<D>,<B>) = {g}

ПЕРВ(b<C><D><E>) = {b}

ПЕРВ(ca) = {c}

ПЕРВ(d<D>) = {d}

ПЕРВ(g<A>f) {g}

ПЕРВ(c) = {c} Затем вычислим функцию для правил (5) и (6) : ПЕРВ (<C>) = ПЕРВ (<D>a<B>) И ПЕРВ (ca). Учитывая, что <D> является аннулирующим нетерминалом, получаем: ПЕРВ(<C>) = ПЕРВ(a<B>) ИПЕРВ(<D>) И{c} = {a}И{d}И{c}={a,d,c}. При вычислении функции для правил (1) и (2) также необходимо иметь в виду то, что <B> является аннулирующим терминалом, поэтому имеем: ПЕРВ(<A>) = ПЕРВ(<B><C>c) И ПЕРВ(g<D><B>) =

ПЕРВ(<C>c) И ПЕРВ(<B>) И ПЕРВ(g<D><B>) = {a,d,c} И {b} И{g} = {a,b,c,d,g}.

   

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

Соседние файлы в папке Формальные языки, грамматики и автоматы