
100
Если во время исполнения последнего цикла не обнаружено нарушение
внешней балансировки
74
, то построенная управляющая таблица прямого про-
смотра δ
f
является правильной. Иначе она не годится для использования и в
этом случае необходимо попытаться исключить обнаруженные дефекты путем
эквивалентных преобразований исходной грамматики.
Вспомогательные алгоритмы для построения прямого просмотра. Да-
лее кратко опишем вспомогательные процедуры, использующиеся в рассмот-
ренном алгоритме построения прямого просмотра.
Alarm — сигнализация нарушения ограничений, накладываемых на грам-
матику. Процедура выдает сообщение о нарушении необходимых и достаточ-
ных условий, гарантирующих существование процессора требуемого класса.
Она же прекращает процесс его построения.
Ambiguous — семантическая неоднозначность. Процедура дает результат
true, если множество, заданное ее параметром, содержит более одной семанти-
ческой цепочки. В противном случае ее результат — false.
Branches — множество ветвей, составляющих данный лес. Процедура
Branches(f), где f — некоторый лес, выдает множество ветвей, его составляю-
щих.
Conj — сопряженность подавляемого состояния с магазинным символом.
Считается, что подавляемое состояние q ∈Q
f
сопряжено с магазинным сим-
волом X ∈Γ
f
при условии r, если в момент обращения процессора прямого про-
смотра к магазину в состоянии q, когда интерпретация резольверной цепочки r
дает true, на его вершине может оказаться символ X.
Функция Conj(q, X, r), где q — подавляемое состояние, X — магазинный
символ, r — составной резольвер, определяется следующим образом:
Conj(q, X, r)
def
=
Mask(q, r )⊆Mark(X)
75
.
Create edge — образовать ребро. Процедура Create edge(u, v) образует ори-
ентированную дугу от вершины u к вершине v.
Develope — разложение состояния. Разложение состояния q ∈Q
f
, являюще-
гося параметром процедуры Develope, выполняется по следующим шагам:
1. Создаются копии вершин, входящих в множество q. Будем считать, что
они принадлежат нулевому уровню разложения данного состояния q. Далее эти
копии вершин считаются корнями деревьев, построение которых производится
при помощи последующих шагов алгоритма.
2. К каждому корню пристраиваются копии дуг управляющей граф-схемы,
инцидентных его прообразу, вместе с их концевыми вершинами и контекстны-
ми
76
метками, помечающими эти дуги. Будем считать, что множество присое-
диненных таким образом вершин образует первый уровень разложения состоя-
ния q. Далее, level:= 1.
74
Балансировка называется внешней, так как она не может быть проверена локально по
разложению состояния, а выполняется с учетом глобальной информации, содержащейся в
управляющей таблице прямого просмотра.
75
См. определение функций Mask и Mark далее в этом разделе.
76
Т.е. семантическими и резольверными.