Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
82
Добавлен:
02.05.2014
Размер:
1.59 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 → O while G

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

E → E-F | E+F | E-- | F

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)F—c 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

<

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

Соседние файлы в папке Курсовой проект [Вариант 12-13]