Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Обобщенные схемы синтаксически управляемого перевода






Расширим определение СУ-схемы, с тем чтобы выполнять более широкий класс переводов. Во-первых, позволим иметь в каждой вершине дерева разбора несколько переводов. Как и в обычной СУ-схеме, каждый перевод зависит от прямых потомков соответствующей вершины дерева. Во- вторых, позволим элементам перевода быть произвольными цепочками выходных символов и символов, представляющих переводы в потомках. Таким образом, символы перевода могут повторяться или вообще отсутствовать.

Определение. Обобщенной схемой синтаксически управляемого перевода (или трансляции, сокращенно: OСУ-схемой) называется шестерка , где все символы имеют тот же смысл, что и для СУ-схемы, за исключением того, что

1. - конечное множество символов перевода вида Ai, где и i - целое число;

2. R - конечное множество правил перевода вида A -> u, A1 = v1,..., Am = vm, удовлетворяющих следующим условиям:

1. для 1 < = j < = m,

2. каждый символ, входящий в v1,..., vm, либо принадлежит либо является , где B входит в u,

3. если u имеет более одного вхождения символа B, то каждый символ Bk во всех v соотнесен (верхним индексом) с конкретным вхождением B.

A -> u называют входным правилом вывода, Ai - переводом нетерминала A, Ai = vi - элементом перевода, связанным с этим правилом перевода. Если в ОСУ-схеме нет двух правил перевода с одинаковым входным правилом вывода, то ее называют семантически однозначной.

Выход ОСУ-схемы определим снизу вверх. С каждой внутренней вершиной n дерева разбора (во входной грамматике), помеченнойA, свяжем одну цепочку для каждого Ai. Эта цепочка называется значением (или переводом) символа Ai в вершине n. Каждое значение вычисляется подстановкой значений символов перевода данного элемента перевода Ai = vi, определенных в прямых потомках вершины n.

Переводом , определяемым ОСУ-схемой Tr, назовем множество {(x, y) | x имеет дерево разбора во входной грамматике для Tr и y - значение выделенного символа перевода Sk в корне этого дерева }.

Пример 5.4. Рассмотрим формальное дифференцирование выражений, включающих константы 0 и 1, переменную x, функцииsin и cos, а также операции * и +. Такие выражения порождает грамматика

E -> E + T | T

T -> T * F | F

F -> (E) | sin (E) | cos (E)|x|0|1

Свяжем с каждым из E, T и F два перевода, обозначенных индексом 1 и 2. Индекс 1 указывает на то, что выражение не дифференцировано, 2 - что выражение продифференцировано. Формальная производная - это E2. Законы дифференцирования таковы:

d(f(x) + g(x)) = df(x) + dg(x)d(f(x) * g(x)) = f(x) * dg(x) + g(x) * df(x)d sin (f(x)) = cos (f(x)) * df(x)d cos (f(x)) = -sin (f(x))df(x)dx = 1d0 = 0d1 = 0

Эти законы можно реализовать следующей ОСУ-схемой:

E -> E + T E1 = E1 + T1 E2 = E2 + T2E -> T E1 = T1 E2 = T2T -> T * F T1 = T1 * F1 T2 = T1 * F2 + T2 * F1T -> F T1 = F1 T2 = F2F -> (E) F1 = (E1) F2 = (E2)F -> sin (E) F1 = sin (E1) F2 = cos (E1) * (E2)F -> cos (E) F1 = cos (E1) F2 = - sin (E1) * (E2)


Рис. 5.1.

F -> x F1 = x F2 = 1 F -> 0 F1 = 0 F2 = 0 F -> 1 F1 = 1 F2 = 0

Дерево вывода для sin (cos (x)) + x приведено на рис. 5.1.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.