Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
57
Добавлен:
16.04.2015
Размер:
1.47 Mб
Скачать

Необходимое условие LL(1)

Это означает, что существуют

a, b FOLLOWG ( A),

 

 

 

 

 

1

 

такие, что

 

 

 

 

 

c FIRST

G

( a)

и

c FIRST

G

 

1

 

1

 

 

 

 

и согласно определению функции существуют выводы:

b),

FIRSTG 1

 

a

*

 

*

 

 

cu и

b cv,

 

 

G

 

G

 

при некоторых u,v VT,

если c VT, или

 

 

 

*

 

 

 

 

 

 

 

 

*

 

*

 

 

a

G

и b

G

, если

c = ,

и в этом случае a = b =

.

 

Ret 35

Ret 38

Ret 39

Ret 42

31

Необходимое условие LL(1)

Случай 1: c VT,

 

 

a cua = cu, cu, uVT*;

*

*

 

G

G

 

*

*

 

b cvb = cv, cv, vV *.

G

G

T

 

Так как грамматика G — приведённая, то существует вывод, в частности левосторонний, который порождает сентенциальную форму, содержащую A:

S * wA , lm

который может быть продолжен двумя способами:

32

Необходимое условие LL(1)

*

 

*

*

 

1) S wA w wcuwcuz,

lm

lm

lm

lm

x

 

 

 

 

*

 

*

*

 

2) S wA w wcvwcvz ,

lm

lm

lm

lm

y

 

*

 

 

 

 

* существует также в

где вывод z c z V

 

lm

T

 

 

силу приведённости грамматики G.

Итак, имеем два левосторонних вывода 1) и 2), фигурирующие в определении 2.3 LL(k)-грамматик, в которых в роли цепочки x используется cuz, в роли цепочки y cvz, причём

33

Необходимое условие LL(1)

FIRST

G

(x) = FIRST

G

 

 

 

 

(cu z) {c},

1

1

 

FIRST

G

( y) = FIRST

G

 

 

 

(cv z) {c},

1

1

 

но .

Следовательно, грамматика G не LL(1), что противоречит первоначальному предположению.

34

Необходимое условие LL(1)

Случай 2: c VT,

* ,

G

c a FOLLOW

G

( A)

 

1

 

(см. 31)

b

* G

cvb,

* G

cv, vVT*.

То, что существует ний, вида S

 

G

( A),

означает, что

1

c FOLLOW

 

 

вывод, в частности левосторон-

*

 

G

 

wA , такой, что

1

( )

lm

c FIRST

 

 

 

 

или,

* lm

что то же самое, существует вывод сz при некотором z VT*.

35

Необходимое условие LL(1)

Продолжим левосторонним образом вывод

S wA двумя способами:

 

 

*

 

 

 

 

 

 

 

lm

 

wA w

 

w

 

wсz,

1) S

 

 

 

 

 

 

*

 

 

*

 

*

 

 

lm

 

lm

lm

 

lm

 

 

 

 

 

 

2) S

wA w

 

 

 

x

wсvwсvсz.

 

*

 

 

*

 

 

*

 

 

 

 

 

 

 

lm

 

lm

lm

 

 

lm

 

 

 

 

 

 

 

y

Получили

два

вывода 1) и 2),

фигурирующие в определении LL(k)- грамматик (при k = 1), с cz в роли цепочки x и cvcz в роли цепочки y.

36

Необходимое условие LL(1)

Имеем:

т. е.

но .

FIRST

G

(x) = FIRST

G

(cz) {c},

 

 

 

 

1

1

 

FIRST

G

( y) = FIRST

G

 

 

 

 

(cv cz) {c},

1

1

 

FIRST

G

(x) = FIRST

G

( y),

 

 

1

1

 

Следовательно, грамматика G не LL(1), что противоречит первоначальному предположению.

37

Необходимое условие LL(1)

Случай 3: c VT,

a

cua, cu, uVT*;

 

*

*

 

 

G

G

 

*

 

G

( A)

, c b FOLLOW1

G

 

 

 

(см. 31).

Он разбирается аналогично случаю 2.

38

Необходимое условие LL(1)

Случай 4: c VT,

c

* G b

,

*

 

 

, a = b = c,

G

G

( A) (см. 31).

FOLLOW

 

 

1

 

То, что ствование

c FOLLOW

G

 

1

вывода вида S

( A),

означает суще-

 

 

wA , такого, что

*

G

c FIRST

G

( )

 

1

 

или, что то же самое,

* G

cz при некотором z VT*.

39

Необходимое условие LL(1)

 

 

*

 

 

Теперь вывод S wA перестроим в лево-

 

 

G

 

 

сторонний и продолжим двумя способами:

*

 

*

*

 

1) S wA w w wсz ,

lm

lm

lm

lm

x

*

 

*

*

 

 

2) S wA w w wсz ,

lm

lm

lm

lm

y

 

 

 

 

 

Мы получили два левосторонних вывода

1) и 2), фигурирующих в определении LL(k)- грамматик (при k = 1), в которых в роли цепочек x и y используются одинаковые терминальные цепочки сz:

FIRST1G(x) FIRST1G( y) FIRST1G(cz) {c},

притом что .

40

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