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

4.2.5.Включение -правилв lr(0)-иSlr (1)-грамматики

Задача построения управляющей таблицы для LR(0)- и SLR(1)-грамматик c -правилами осложняется тем, что на каждом шаге работы анализатора можно считать, что верхушка мага­зина совпадает с правой частью любого -правила (например, с номером i), и следовательно, имеются основания полагать, что функция действия f(а) для всех аргументов имеет значение (СВЕРТКА, i).

Доказано, что для данной пары магазинного Т и входного a символов и правила вывода А с номером i в строке Т управляющей таблицы Ʈ f(a)=(СВЕРТКА, i) тогда и только тогда, когда a СЛЕД(А) и g(A) ОШИБКА.

Первые три шага алгоритма построения управляющей таблицы для LR(0)- и SLR(1)-грамматик, описанные в 4.2.3, остаются без изменений, так как добавление к грамматике или удаление из нее -правил не изменяет множества грамматичес­ких вхождений и, следовательно, не влияет на отношение ВПОД.

Для учета -правил шаг 4 алгоритма построения управляющей таблицы для LR(0)- и SLR(1)-грамматик необходимо расширить следующим действием:

г) если А – правило вывода с номером i и множество

СЛЕД (A) ={aj 1j m , где m – количество символов в T { } },

то f(aj) = (СВЕРТКА, i) в тех строках управляющей таблицы, для которых g(A) ОШИБКА.

Пример 4.6

Построить управляющую таблицу для SLR(1)-грамматики G4, правила вывода которой приведены на рис. 4.21.

  1. S bABd

  2. A Aa

  3. A

  4. B Bc

  5. B

Рис. 4.21

Матрица отношенияВПОД, определенная на множестве граммати­ческих вхождений пополненной грамматики

G4= < T, N { S}, S, R { S S} >

приведена на рис. 4.22, таблицы переходов не­детерминированного и эквивалентного ему детерминированного конечного автомата изображены на рис. 4.23 и 4.24 соот­ветственно, а на рис. 4.25 приведен магазинный алфавит ана­лизатора.

S0

b1

A1

B1

d1

A2

a2

B4

c4

S0

b1

1

1

A1

1

1

B1

1

d1

A2

1

a2

B4

1

c4

1

1

Рис.4.22

S

A

B

a

b

c

d

S0

b1

A1,A2

A1

B1,B2

B1

d1

d1

A2

a2

a2

B4

c4

c4

S0

b1

Рис. 4.23

S

A

B

a

b

c

d

{ S0 }

{ b1 }

{A1,A2}

{A1,A2}

{B1, B4}

{a2}

{B1, B4}

{c4}

{d1}

{a2}

{c4}

{d1}

{}

{ S0 }

{ b1 }

Рис. 4.24

{ S0 }

{ b1 }

{A1,A2}

B1, B4}

{a2}

{c4}

{d1}

{}

Vp

S0

b1

Ax

Bx

a2

c4

d1

Рис. 4.25

После применения алгоритма построения управляющей таблицы SLR(1)-анализатора для грамматики G без -правил (3) и (5) получим управляющую таблицу Ʈ, изображенную на рис. 4.26 (в клетках, выделенных серым цветом, в этот момент находятся значения ОШИБКА).

Выполним п.4 алгоритма. Для правила (3) имеем: СЛЕД(А) = { a, c, d } и g(A)=Ax в строке, отмеченной символом b1. Следовательно, в этой строке f(a)= (СВЕРТКА, 3), f(с) = (СВЕРТКА, 3) и f(d) = (СВЕРТКА, 3).

Аналогично для правила (5): СЛЕД(B) = { c, d } и g(B)=Bx в строке, отмеченной символом Ax. Таким образом, в строке Ax f(с) = (СВЕРТКА, 5) и f(d) = (СВЕРТКА, 5).

T

f(u)

g(X)

a

b

c

d

S

A

B

a

b

c

d

S0

Д

b1

С,3

С,3

С,3

Ax

Ax

П

С,5

С,5

Bx

a2

Bx

П

П

c4

d1

a2

С,2

С,2

С,2

c4

С,4

С,4

d1

С,1

S0

b1

Рис. 4.26

Соседние файлы в папке ВОСХОДЯЩИЕ МЕТОДЫ ОБРАБОТКИ ЯЗЫКОВ
  • #
    01.05.2014263.68 Кб48LR_K_GR.DOC
  • #
    01.05.2014222 б8Методы _восходящие методы обработки языков_ .log