
247
Подготовка спецификации трансляции в SYNTAX-технологии состоит в
том, что в правила обычной КС-грамматики вносятся контекстные условия и
семантика в виде контекстных символов (семантик и резольверов), с
параллельным описанием интерпретирующих их процедур и логических
функций, а затем полученная таким образом трансляционная грамматика
подвергается эквивалентным преобразованиям с целью ее максимально
возможной регуляризации. Разумеется, в результате этих преобразований
упрощается синтаксическая структура входного языка, вплоть до того, что она
полностью исчезает, если входной язык регулярен. Но она и не нужна после
того, как в ней был запланирован контекст и семантика. Наоборот, чем меньше
регулярных фрагментов остается в аппроксимации входного языка, тем меньше
конечных автоматов используется для его обработки. В предельном случае,
когда входной язык регулярен, мы имеем один регулярный фрагмент и один
конечно-автоматный процессор для него.
Деформация исходной синтаксической структуры, конечно, не желательна
для диагностики ошибок периода процессирования, поскольку
диагностические сообщения об ошибках должны формулироваться в терминах
исходной грамматики, тогда как фактически синтаксический анализ идет по
другой — рабочей (регуляризированной) грамматике. Введение в SYNTAX-
технологии концепции вспомогательных понятий и синонимов для них и
нетерминалов практически полностью компенсирует исчезновение
структурной информации из рабочей грамматики.
Технология YACC базируется на кнутовских LALR(1)-грамматиках. Две
другие системы основаны на атрибутных грамматиках Д.Кнута.
Бесконтекстная основа технологии Eli является открытой
155
.
Синтаксический анализ в SYNTAX-технологии накладывает ограничения на
класс грамматик, характерные для методов анализа сверху вниз, тогда как
LALR-грамматики ориентированы на анализ по схеме снизу вверх.
Атрибутная техника, используемая в GAG и Eli, предполагает [14]
построение бесконтекстного дерева вывода входной цепочки, и затем внесение
в него контекстной информации
156
путем вычисления значений атрибутов
символов, помечающих его узлы. В SYNTAX-технологии учет контекстной
информации синхронизирован с просмотром входа, и дерево вывода строится с
учетом контекстной информации так, что его структура зависит от нее.
Интересной особенностью SYNTAX-технологии является и то, что наряду с
генерацией анализирующих процессоров она позволяет генерировать также и
порождающие процессоры и сочетать те и другие в рамках одного SYNTAX-
приложения. Именно эта ее особенность позволяет строить программы, в
которых описание и реализация управляющей структуры алгоритма обработки
155
И вообще, Eli является открытой системой в том смысле, что ее компоненты могут легко
заменяться другими функционально равнозначными и без особых хлопот в нее могут
добавляться новые функциональные блоки.
156
Хотя фактическое вычисление атрибутов может производиться по ходу построения
дерева вывода, это не может изменить того факта, что структура такого дерева определяется
без учета контекстной информации.