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

Xy, если в правой части правила они находятся рядом, т.Е. Axy

Т.о. ищем в нашей грамматике символы, находящиеся рядом и в соответствующие ячейки матрицы заносим обозначение одновременного сворачивания:

В 1-ом правиле: begin D, D ; , ; P, P end

В 3-ем правиле: D ; , ; d

В 5-ом правиле: P ; , ; P

  • Ищем отношения вида X <• Y (Х сворачивается позже, чем У).

Для этого должны существовать правила исходной грамматики вида

AXВR , B+Y (т.е. в правиле за этим символом Х должен следовать нетерминал, из которого нетривиальным образом выводится цепочка, начинающаяся на Y).

Если из начального символа грамматики S+Y, то <•Y.

Итак, ищем правила, в правой части которых есть нетерминал, перед которым стоит какой-либо символ. Затем смотрим, с каких символом могут начинаться выводы из этого нетерминала.

(1) S->begin D ; P end Из D возможны выводы, начинающиеся на d , D

Получили: begin < d , begin < D

(5) P->P ; P Из P возможны выводы, начинающиеся на P

Получили: ; < p , ; < P

Из начального символа S грамматики выводятся цепочки, начинающиеся с символa begin

Отсюда отношение: <• begin

  • Ищем отношения вида X > Y (Х сворачивается раньше, чем У).

Для этого должны существовать правила исходной грамматики вида

AВYR , B+X (т.е. в правиле перед символом Y должен находиться нетерминал, из которого нетривиальным образом выводится цепочка, заканчивающаяся на X). Если из начального символа грамматики S+X (вывод заканчивается на Х), то X•>.

В исходной грамматике ищем правила, содержащие нетерминал, непосредственно за которым следует какой-либо символ. Затем смотрим, на какие символы могут заканчиваться цепочки, выводимые из нетерминала.

(1) S->begin D ; P end Цепочки, выводимые из D могут заканчиваться на d : d > ;

Цепочки, выводимые из P могут заканчиваться на p : p > end;

(3) D->D ; d Цепочки, выводимые из D могут заканчиваться на d : d > ;

Все возможные символы, заканчивающие цепочки из S: end - end •> 

S

D

P

beg

;

end

d

p

Eps

S

D

=

P

=

=

beg

=<

<

;

=<

=

=<

end

>

d

>

p

>

>

<

Существуют пары символов из V для которых выполняется более одного отношения простого предшествования. Следовательно грамматика не является прямого предшествования ( а операторного).

Функции “перенос- свертка” для грамматики операторного предшествования.

(алгоритм – см. Вариант № 5)

функция "перенос"

beg

;

end

d

p

Eps

S

D

П

P

П

П

beg

П

;

П

П

end

C

d

C

p

C

C

П

S

Д

функция "свертка"

(1)

S->begin D ; P end

(2)

D->d

(3)

D->D;d

(4)

P->p

(5)

P->P;p

S

D

P

beg

2

3

;

4

5

end

d

p

1

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