состояние правила p} stop: boolean;
p] of состояние; {локальный вектор состояния правил} A : set of атрибут;{ состояние правила p} stop: boolean; begin if (EVAL [Stv[p], I] пуст) then A := I [ Stv[p], s := пусто , LStv := Stv; stop := false, EVAL [Stv[p], I] :='@' repeat if (
fpa<k> готовая к вычислению) then s := s || fpa<k>, A := A + a<k> else if (
поддерево k, результат Y которого не пуст) then s := s || V ISIT(k, I(Xk)
A), A := AUY ; for pi : Xk
u do PLAN(pi, I(Xk)
A, LStv) {в этой точке меняется значение LStv[pi]} end else stop := true end end until stop; EVAL [Stv[p], I] := s || st(A), Stv := A {Stv[p] меняется в точке вызова} end end; {тело программы} begin for I := 1 to p do St[i] := множество атрибутов терминалов правила i; PLAN({}, {}, St) end end.
Вычисление атрибутов на дереве t заключается в выполнении построенных планов в соответствии с изменениями состояний правил и осуществляется следующей программой:
begin каждое правило дерева t перевести в начальное состояние, определяемое множеством атрибутов терминалов; V ISIT(корень, {}) end.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий