Формализмы определения перевода

Теория перевода

Перевод индексной записи в тетрады

- префиксная запись.

Сканер, распознавая идентификатор, выдает два значения: некоторую внутреннюю форму и его физические имя. На имя, где происходит замена Е+Т на Е, семантическая программа должна выдать тетраду. Однако это сделать нельзя, так как сентенциальная форма не содержит информации о физических именах Е и Т, эта информация была потеряна в первой редукции, когда было использовано правило F:=i.

При польской записи эта проблема не возникала, так как выходная цепочка формировалась при первой редукции. Для решения этой задачи используем некоторую семантическую подпрограмму, которая будет передавать имя встретившегося идентификатора поэтапно в процессе редукции.

Назовем ее:

FSEM = i(A); EProg(+, ESEM, TSEM, Re);

TSEM = FSEM; вызывается, как только встречается Е+Т;

ESEM = TSEM; Re – результат.

Перевод (трансляция) – это некоторое отношение между цепочками, т.е. некоторое множество пар цепочек. Существует два метода определения перевода:

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

2. Распознаватель с выходом, который на каждом такте анализируемой цепочки в алфавите S может выдать цепочку ограниченной длины в алфавите D.

Пусть:

S - входной алфавит;

D - выходной;

.

Тогда переводом языка L1 в L2 назовем отношение Т, такое, что

, где

L1 – область определения,

L2 – множество значений.

Если, то цепочка х – входная, а у – выходная.

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

Рассмотрим следующий пример: пусть требуется греческий алфавит перевести в русский:

Греческий алфавит Русский алфавит
A, a Альфа
B, b Вета

Такой тип перевода называется гомоморфизмом, он для программирования не приемлем.

3.5.2. Синтаксически управляемый перевод

Транслятором, реализующим перевод Т, назовем устройство, которое по данной входной цепочке х вычисляет выходную цепочку у, такую, что.

Определим основные требования к такому транслятору:

­ определение перевода должно устанавливать однозначное соответствие между парами цепочек;

­ определение перевода должно быть легко алгоритмизировано;

­ время обработки входной цепочки должно линейно зависеть от;

­ программа транслятора должна проверяться тестом конечной длины, гарантирующим правильность его работы.

Схема синтаксически управляемого перевода (СУ-перевода) представляет собой грамматику, в которой каждому правилу присоединяется элемент перевода.

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

Рассмотрим следующий пример:

Пусть имеется цепочка – 0011, необходимо получить - 1100.

Порождающие правила Преобразующие правила
S:=0S S:=S0
S:=1S S:=S1
S:=e S:=e
   

Преобразование по правилам:

S=>0S, S0=>00S, S00=>001S, S100=>0011S, S1100=> 0011, 1100.

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

Правила порождающей грамматики Pi Правила выходной грамматики P0  
E+T T T*F F (E) ET+ T TF* F E Польская запись

Пусть имеется цепочка: i+i*i.

Преобразование по правилам:

E=>E+T, ET+=>T+T, TT+=>F+T, FT+=>i+T, iT+=>i+T*F, iTF*+=>i+F*F, iFF*+=>i+i*F, iiF*+=>i+i*i, iii*+.

Этот метод проще, так как здесь нет необходимости в подпрограмме, но преобразование по нему происходит дольше.

Схемой СУ-перевода называют цепочку символов:

Пусть А:=a,b. Каждому вхождению некоторого нетерминала в цепочку a, соответствует вхождение того же нетерминала в цепочку b. Если нетерминал (В) входит в цепочку 1 раз, то соответствие очевидно, если больше одного раза, то требуется индексировать.

Пусть A:=BcB, BBc. Если, то не ясно, где какое В брать. При индексации же этой проблемы не возникает: A:=B1cB2, B1B2c.

Если - СУ-схема, то называется СУ-транслятором.

Грамматики:

называется входной;

называется выходной.

СУ-перевод можно трактовать как метод преобразования деревьев вывода входной грамматики G1 в деревья вывода выходной грамматики G0. Перевод цепочки х можно получить, построив дерево вывода, затем преобразовать это дерево в системе правил выходной грамматики и в качестве выходной цепочки взять крону выходного дерева.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: