Скачиваний:
9
Добавлен:
01.05.2014
Размер:
1.43 Mб
Скачать
  1. Проектирование описания перевода

    1. Методика проектирования описания перевода

При проектировании перевода следует руководствоваться следующими общими соображениями:

  1. Описание перевода строится последовательно для конструкций входного языка в порядке их усложнения, начиная с простейших конструкций, например в следующей последовательности: выражение, оператор присваивания, оператор цикла.

  2. Выходная цепочка (результат перевода) включает в себя объекты (сущности) трех видов:

  • объекты, передаваемые в выходную цепочку из входной цепочки;

  • объекты, не изменяющиеся в процессе перевода (терминалы выходного языка);

  • объекты, генерируемые во время перевода.

  1. Транслирующая грамматика определяет порядок применения операционных символов (элементов перевода), строящих выходную цепочку, атрибуты же используются только для передачи значений символов из одних правил в другие.

  2. Операционный символ, включаемый в правило вывода грамматики, может генерировать выходную цепочку до тех пор, пока в нее не должен быть включен объект, перемещаемый из входной цепочки и недоступный в данном правиле грамматики.

Проектирование описания перевода некоторой (одной!) конструкции входного языка выполняется за несколько этапов.

А. Неформальное описание перевода. Неформальное описание перевода представляет собой пару цепочек, первая из которых является конструкцией входного языка, а вторая – ее представлением в выходном языке. При построении рекомендуется:

  • строить описание перевода на основе описания синтаксиса и семантики входного языка, учитывая все возможные форматы представления входной конструкции (например, if-then и if-then-else);

  • конструкции, входящие как часть в данную конструкцию, перевод которых уже описан, считать терминальными;

  • после построения неформального описания перевода выделить в нем символы, передаваемые из входной цепочки, и символы, генерируемые при его построении.

Б. Описание синтаксиса. Описание синтаксиса выполняется в БНФ или расширенной БНФ. После стандартных преобразований БНФ преобразуется в КС-грамматику, описывающую рассматриваемую конструкцию входного языка.

В. Определение транслирующей грамматики. При определении транслирующей грамматики требуется анализировать последовательность используемых при построении перевода правил грамматики, а также моделировать действия, выполняемые операционными символами грамматики. В связи с этим на данном этапе должны быть уточнены:

  • метод синтаксического анализа, используемый при анализе и переводе данной конструкции, и способ его реализации;

  • интерпретация операционных символов (цепочка символов, помещаемых на выходную ленту, или имя подпрограммы, которую необходимо выполнить).

Исходными данными при построении транслирующей грамматики являются:

  • КС-грамматика, описывающая синтаксис конструкции;

  • последовательность правил грамматики (разбор), используемых процессором при построении перевода;

  • объекты, доступные процессору, выполняющему перевод (для процессора с магазинной памятью – это текущий символ входной цепочки и, в зависимости от метода синтаксического анализа, часть или весь магазин).

Для построения транслирующей грамматики:

  1. Выбрать простейшую входную цепочку, соответствующую данной конструкции, и определить ее разбор.

  2. В неформальном описании перевода выделить очередной (вначале первый) символ выходной цепочки, который должен быть передан в нее из входной цепочки.

3. На основании доступности (видимости) данных процессору и учитывая разбор, определить правило грамматики, в которое нужно включить элемент перевода (операционный символ), переносящий нужный символ в выходную цепочку. Если действия успешны, то перейти к п. 5, иначе выполнить п. 4.

4. Если нельзя выполнить п. 3, то соответствующий операционный символ включить в наиболее подходящее правило грамматики (в дальнейшем этот символ будет передан в него при помощи атрибутов), определив, если нужно, дополнительную выходную ленту процессора.

5. Возложить на новый (включенный) операционный символ действия по записи в выходную цепочку всех символов, вплоть до следующего символа, который должен быть передан из входной цепочки.

6. Повторить пп. 2 – 5 для всех символов, передаваемых из входной цепочки.

7. Тестировать транслирующую грамматику на более сложных, например вложенных, входных цепочках.

В наиболее простых случаях (простая конструкция входного языка, простое ее представление в выходном языке, удачные метод синтаксического анализа и его реализация, удачное расположение операционных символов) может оказаться, что для описания перевода достаточно использовать только транслирующую грамматику.

Соседние файлы в папке Формальные методы описания перевода(1)