Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект2 / Пояснительная Записка (v2.0).doc
Скачиваний:
47
Добавлен:
02.05.2014
Размер:
1.52 Mб
Скачать

3.3 Таблицы предшествования

Множество правил грамматики имеет вид:

S → prog L end.

L → O | L;O | L;

B→ B or C | C

C→ C and D | D

D → G | not D

G → E < E | E>E | E=E | (B)

K → G then O

M → K else O

Q → G do O

O → if M | if K| begin L end | while Q | c:=E

EE-F | E+F | E++|

F → (E) | c | g

Грамматика является грамматикой операторного предшествования, так как она не содержит l-правил и правые части правил не содержат смежных нетерминальных символов. Построим множества крайних левых и крайних правых символовL(U),R(U) относительно всех нетерминальных символов грамматики.

Таблица 3.1

Множества крайних правы и крайних левых символов

Символ (U)

Начало построения

Результат

L(U)

R(U)

L(U)

R(U)

S

prog

end.

prog

end.

L

O L

O;

OL if begin do c

OMKQEGF ) c g end ;

B

B C

C

BCDG not E(F c g

CDQEF ) c g end

C

C D

D

CDG not E(F c g

DGEF ) c g end

D

G not

GD

G not E(F c g

DGEF ) c g end

G

E(

E)

E(F c g

EF ) c g end

K

G

O

GE (FCD

OMKQEGF ) c g end

M

K

O

GKE(F c g

OMKQEGF ) c g end

Q

O

G

If begin do c

GE)Fc g

O

If begin do c

MK end Q E

EF do c

MK end QEOGF) cg

E

E F

F ++

EF ( c g

F ) c g

F

( c g

) c g

( c g

) c g

На основе полученных множеств построим множества крайних левых и крайних

правых терминальных символов Lt(U),Rt(U) относительно всех нетерминальных символов грамматики.

Таблица 3.2

Множества крайних правых и крайних левых терминальных символов

Символ (U)

Начало построения

Результат

L(U)

R(U)

L(U)

R(U)

S

prog

end.

prog

end.

L

;

;

if begin do c

if end do := else then while - + ++ ; < > = ) c g

B

or

or

or and not < > = ( - + ++ c g

and not - + ++ ; < > = ) c g

C

and

and

and not < > = ( - + ++ c g

not <> = ) -+ ++) c g and

D

not

not

or not < > = ( - + ++ c g

< > = ) not - + ++ c g

G

< > = (

< > = )

< > = ( - + ++ c g

< > = ) - + ++ c g

K

then

then

< > = ( - + ++ c g

then if end do := else while - + ++ < > = )cg

M

else

else

< > = ( - + ++ c g then else

then if end do := else while - + -- < > = )cg

Q

while

while

while if begin do c

while < > = - + -- c g

O

if begin do c

if end do := c

if begin do c

if end do then := else while - + -- <>=)cg

E

- + ++

- + ++

- + ++ ( c g

- + ++ ) c g

F

( c g

) c g

( c g

) c g

На основе этих множеств и правил грамматики Gпостроим матрицу предшествования грамматики:

Таблица 3.3

Матрица предшествования исходной грамматики

prog

end.

;

or

and

not

<

>

=

(

)

if

then

else

do

while

:=

-

+

++

c

g

begin

end

over

prog

-

<

<

-

-

-

-

-

-

-

-

<

-

<

-

<

-

-

-

-

<

-

<

-

-

end.

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

>

;

-

>

>

>

-

-

-

-

-

-

>

<

-

>

<

>

<

-

-

-

<

-

<

>

-

or

-

-

-

>

<

<

<

<

<

<

>

-

-

-

-

-

-

<

<

<

<

<

-

>

-

and

-

-

-

>

>

<

-

-

-

<

>

-

-

-

-

-

-

<

<

<

<

-

-

-

-

not

-

-

-

>

>

<

<

<

<

<

>

-

-

-

-

-

-

<

<

<

<

<

-

-

-

<

-

>

>

>

>

-

-

-

-

<

>

-

>

>

>

-

-

<

<

<

<

<

-

>

-

>

-

>

>

>

>

-

-

-

-

<

>

-

>

>

>

-

-

<

<

<

<

<

-

>

-

=

-

>

>

>

>

-

-

-

-

<

>

-

>

>

>

-

-

<

<

<

<

<

-

>

-

(

-

-

-

<

<

<

<

<

<

<

=

-

-

-

-

-

-

<

<

<

<

<

-

-

-

)

-

>

>

>

>

-

>

>

>

-

>

-

>

>

-

-

-

>

>

>

-

-

-

>

-

if

-

>

>

-

-

-

<

<

<

<

-

-

<

<

-

>

-

<

<

<

<

<

-

>

-

then

-

>

>

-

-

-

-

-

-

-

-

<

-

>

<

>

<

-

-

-

<

-

<

>

-

else

-

>

>

-

-

-

-

-

-

-

-

<

-

>

<

>

<

-

-

-

<

-

<

>

-

do

-

>

>

-

-

-

-

-

-

-

<

<

-

<

-

<

<

-

-

-

<

-

<

>

-

while

-

>

>

-

-

-

<

<

<

<

-

-

-

>

<

>

-

<

<

<

<

<

-

>

-

:=

-

>

>

-

-

-

-

-

<

-

-

-

-

>

-

>

-

<

<

<

<

<

-

>

-

-

-

>

>

>

>

-

>

>

>

<

>

-

>

>

-

>

-

>

>

>

<

<

-

>

-

+

-

>

>

>

>

-

>

>

>

<

>

-

>

>

-

>

-

>

>

>

<

<

-

>

-

++

-

>

>

>

>

-

>

>

>

<

>

-

>

>

-

>

-

>

>

>

<

<

-

>

-

c

-

>

>

>

>

-

>

>

>

-

>

-

>

>

>

>

>

>

>

>

-

-

-

>

-

g

-

>

>

>

>

-

>

>

>

-

>

-

>

>

>

>

-

>

>

>

-

-

-

>

-

begin

-

-

<

<

-

-

-

-

-

-

-

<

-

-

<

-

<

-

-

-

<

-

<

<

-

end

-

>

>

-

-

-

-

-

-

-

-

-

-

>

-

>

-

-

-

-

-

-

-

>

-

bgn

<

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-