-
Пред.Страница
След.Страница
Раздел
Содержание
3.4.2 Построение функции ПЕРВ(µ)
ПЕРВ(<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}.
-
Пред.Страница
След.Страница
Раздел
Содержание