51
Замечание. Предполагается, что все условия, образующие входы для одно-го
состояния, независимы
43
. Благодаря этому они могут вычисляться в любом
порядке, например в том, в котором они встречаются на входе Условие в
управляющей таблице. Однако Default-вход, если он существует, используется в
последнюю очередь.
Рассмотрим для примера вычисление 3! В начальном состоянии 1 безуслов-
но выполняются действия, представленные терминалом Start. Результатом яв-
ляется образование экземпляра объекта Factorial с полями n =3 и Fac=1. Даль-
нейшая обработка производится в состоянии 2. Из двух условий, определяемых
таблицей для этого состояния, не считая пустого, выполняется условие
Valid&Large. Поэтому исполняются действия, ассоциированные с терминалом
Step. Соответствующий метод присваивает полю Fac значение n =3 и уменьша-
ет n на единицу. Теперь поля объекта Factorial имеют следующие значения: n =2,
а Fac=3.
Следующие действия относятся к состоянию 4. Из двух условий Small и
Large выполняется последнее. Следовательно, вновь выполняются действия
Step, в результате которых Fac получает значение 6, а n — значение 1.
Снова действия определяются таблицей для состояния 4. Теперь выполняя-
ется условие Small и соответственно исполняются действия Finish: экземпляр
объекта Factorial уничтожается, но перед этим деструктор FinishDonе печатает
результат: "3!=6". Процессирование заканчивается в состоянии 3, являющемся
конечным.
1.8. СПЕЦИФИКАЦИЯ ТРАНСЛЯЦИЙ
ПРИ ПОМОЩИ ТРАНСЛЯЦИОННЫХ ГРАФ-СХЕМ
Трансформационный подход. Методика построения синтаксически
управляемых процессоров, используемых в SYNTAX-технологии, основывает-
ся на трансформационном подходе: исходная трансляционная RBNF-
грамматика, специфицирующая трансляцию, подвергается эквивалентным пре-
образованиям (в классе RBNF-грамматик), затем трансформируется в форму
трансляционной граф-схемы и уже по ней строится процессор, реализующий
трансляцию. Построенный процессор, в свою очередь, может подвергаться оп-
тимизирующим эквивалентным преобразованиям. Таким образом, в технологии
используется три различных формы спецификации трансляций, одна из ко-
торых (RBNF-грамматика) удобна для первоначального задания трансляций,
другая (процессоры) является формой реализации трансляций, а третья (транс-
ляционные граф-схемы) есть промежуточная форма между двумя первыми.
Впрочем, она имеет и самостоятельное значение. В частности, эта форма, анна-
логичная синтаксическим диаграммам Вирта, может использоваться для опии-
сания синтаксиса языков и спецификации трансляций непосредственно, тем
более что граф-схемы являются более гибким аппаратом для задания трансля-
ций, чем грамматики
44
. В технологическом комплексе SYNTAX она применяя-
ется также при автоматической генерации тестов.
43
При этом всегда истинное Default-условие в расчет не принимается.
44
Действительно, существуют граф-схемы, для которых невозможно построить прообраз
управляющей грамматики, преобразование которого в граф-схему давало бы оригинальную
граф-схему.