Лекция 12. Перевод и семантика.ppt
- Количество слайдов: 12
Языки программирования и методы трансляции Лекция 12. Перевод и семантика
Соотношение синтаксического анализа и перевода • Перевод – отношение между входными цепочками и выходными цепочками, которые определяют значение (смысл) входных цепочек Подходы к описанию перевода: • Расширение формальной грамматики – система, порождающая перевод (пару цепочек, принадлежащую переводу) • Применение автомата – получение на выходе автомата, распознающего входную цепочку, перевод этой цепочки. Требования к устройству, выполняющему трансляцию: • Возможность автоматического построения транслятора по описанию перевода • Небольшой объем и эффективность трансляции • Корректность
Способы описания перевода Пусть Σ – входной алфавит и - выходной алфавит. Переводом с языка на язык называется отношение из Σ* в *, для которого L 1 – область определения, а L 2 – множество значений. Если , то цепочка y называется выходом для цепочки x. Простейшие переводы можно задать с помощью гомоморфизма.
Пример: описание перевода с помощью гомоморфизма Требуется перевести символы, образующие целые числа со знаком, в их названия. a 1 2 3 h(a) Один Два Три а 5 6 7 h(a) Пять Шесть Семь a 9 0 + h(a) Девять Нуль Плюс 4 Четыре 8 Восемь - Минус Вход: -15 Выход: «минус один пять» Замечание: перевод инфиксного выражения в польскую форму не является гомоморфизмом.
Синтаксически управляемые схемы Правило грамматики Элемент перевода (1) E=ET+ (2) E=T (3) T=TP* (4) T=P (5) P=E (6) P=i Правило (1): «Перевод нетерминала Е, стоящего в левой части правила грамматики, представляет собой перевод, порожденный символом Е, стоящим в правой части этого правила, за которым следует перевод, порождаемый символом Т, и символ + »
Пример: перевод цепочки a*(b+c) Левый вывод: Последовательность выводимых пар: Выходная цепочка при порождении части входной цепочки получается заменой нетерминала выходной цепочки значением элемента перевода
Синтаксически управляемые схемы: основные определения СУ-схемой называется пятерка (N, Σ, , R, S), где: N – множество нетерминальных символов, Σ – входной алфавит, - выходной алфавит, R – конечное множество правил вида A→ , , где вхождения нетерминалов в цепочку образуют перестановку вхождений нетерминалов в цепочку ; S – начальный символ. Выводимая пара: 1. (S, S) – выводимая пара, в которой символы S соответствуют другу. 2. Если ( А ’, A ’) – выводимая пара, а А→ , ’ – правило из R, то ( ’, ’) – выводимая пара. Отношение выводимости: ( А ’, A ’) ═>Т( ’, ’).
СУ-схемы: основные определения (продолжение) Переводом (Т), определяемым СУ-схемой Т, называют множество пар цепочек Если Т=(N, Σ, , R, S) – СУ-схема, то (Т) называется синтаксически управляемым переводом Входной грамматикой СУ-схемы называется грамматика Gi=(N, Σ, P, S), где Выходной грамматикой СУ-схемы называется грамматика Gо=(N, , Q, S), где
Алгоритм преобразования деревьев с помощью СУ-схем Вход: СУ-схема Т с входной грамматикой Gi и выходной грамматикой Go; дерево вывода D в Gi с кроной, принадлежащей Σ*. Выход: дерево вывода D’ в Go, такое, что если x, y – кроны D и D’, то (x, y) принадлежит множеству переводов (Т). Шаг 1 (применяется к внутренней вершине n дерева D, имеющей k прямых потомков n 1, …, nk). 1. 1. Устранить из множества потомков листья, помеченные терминальными или пустыми символами. 1. 2. Пусть А→ - правило входной грамматики, соответствующее вершине n и её потомкам ( образуется конкатенацией меток потомков). Выбрать из R правило вида А→ , . 1. 3. Если остались прямые потомки вершины n, переставить их согласно соответствию нетерминалов в и . 1. 4. Добавить в качестве прямых потомков вершины n листья с метками так, чтобы метки всех прямых потомков образовали цепочку . 1. 5. Применить шаг 1 к прямым потомкам вершины n, не являющимся листьями, в порядке слева направо. Шаг 1 повторяется рекурсивно, начиная с корня дерева D.
Транслирующие грамматики Транслирующей грамматикой называется пятерка GT=(N, Σi, Σa, P, S), где: N –нетерминальный словарь, Σi – словарь входных символов, Σa – словарь операционных символов, S – начальный символ, P – Входная грамматика G правил вида A→ , грамматика GT конечное множество Транслирующая где (1) (2) (3) (4) (5) (6)
Перевод, определяемый Т-грамматикой Активная цепочка: i{i}+i{i}*i{i}{*}{+} (порождается Т-грамматикой) Входная часть цепочки (вычеркнуты операционные символы): i+i*i Операционная часть (вычеркнуты входные символы): {i}{i}{i}{*}{+} Синтаксически управляемым переводом (GT), определяемым Тграмматикой GT, называется множество всех пар, первыми элементами которых являются входные части, а вторыми элементами – операционные части активной цепочки. Один и тот же перевод можно определить разными Т-грамматиками.
E * E E T i {i} + T i E {+} {i} T i {*} {i} i + i R {+} {i} * R R i {i} {*} e Т-грамматика GT называется постфиксной, если (и только если) все операционные символы в правых частях правил вывода расположены правее всех входных и нетерминальных символов.


