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

§2.3. k-Предсказывающие алгоритмы анализа

Для класса LL(k)-грамматик существует адекватный класс анализаторов, называе-

мых k-предсказывающими алгоритмами анализа.

2.3.1. Неформальное описание. Это устройство (рис. 2.1) имеет разбитые на ячейки входную, выходную ленты и ленту магазина. “Дно” магазина маркируется специальным символом, например $, который постоянно находится на магазинной ленте.

61

Вход:

М

а

г

а

з

и X0 н $

x *; u *k; x′ *

u

x′

 

 

 

 

 

 

 

 

 

 

 

x

Управляющая таблица M(X, u)

X0

Выход:

Рис. 2.1a. k-Предсказывающий алгоритм анализа. Начальная конфигурация

62

k-Предсказывающие алгоритмы анализа

В начальный момент на входе находится вся анализируемая цепочка (x *), читающая головка сканирует начало входной ленты, в магазине — начальный символ магазина (X0 ) и маркер его “дна” ($), на выходе пусто (см. рис. 2.1а).

63

k-Предсказывающие алгоритмы анализа

Конечное устройство управления руководствуется управляющей таблицей (M), создаваемой по грамматике, в которой производится синтаксический анализ. Она определяет действия в зависимости от:

аванцепочки (u *k) k символов, ска-

нируемых единовременно читающей головкой входной ленты, начиная с текущего символа, причём при x′ = u k;

верхнего символа магазина (X ).

64

k-Предсказывающие алгоритмы анализа

Этими параметрами определяются движения следующих двух типов:

1. Замещение верхнего символа магазина (X), представляющего левую часть некоторого правила грамматики (A ), цепочкой магазинных символов — правой частью этого правила или цепочкой, производной от неё, и присоединение к концу выходной цепочки номера этого правила (i). При этом продвижения по входной цепочке не происходит, а выходная головка продвигается к следующей свободной ячейке (см. рис. 2.1 б).

65

 

 

Ret 70

x *; u *k; y *

Вход:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

u

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u k , если y =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Управляющая

 

г

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

таблица M(X, u) = ( , i)

 

а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

з

 

 

 

 

*; i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выход:

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

$

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

н

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.1б. k-Предсказывающий алгоритм анализа.

 

 

 

 

 

 

 

Движение типа 1.

66

k-Предсказывающие алгоритмы анализа

2. Сброс верхнего символа магазина и продвижение к следующей ячейке входной ленты. На выходную ленту ничего не пишется.

Такие движения происходят только тогда, когда первый символ аванцепочки — такой же, как верхний символ магазина (см. рис. 2.1в).

67

Ret 68

a ;

x +

Вход:

М

а

a

г

а

з

и

н$

 

 

 

 

 

x′ *

 

 

w

 

a

a′

 

 

 

 

 

 

 

Управляющая

таблица M(X, u) = pop

a

* *

Выход:

Рис. 2.1в. k-Предсказывающий алгоритм анализа.

Движение типа 2.

68

k-Предсказывающие алгоритмы анализа

На каждом такте работы алгоритм адресуется к своей управляющей таблице. Управляющий элемент, если он определён, диктует одно из упомянутых выше движений, которое и выполняется. Этот цикл повторяется до тех пор, пока управляющий элемент не просигнализирует о приёме входной цепочки, и в этом случае на выходе образуется её левосторонний анализ, или управляющий элемент диагностирует ошибку на входе, и тогда алгоритм останавливается, не принимая входной цепочки.

69

k-Предсказывающие алгоритмы анализа

k-Предсказывающий алгоритм анализа напоминает детерминированный магазинный преобразователь, но отличается от него тем, что “видит” сразу k символов на входе и не имеет внутренних состояний управления.

70

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