Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

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

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

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

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

Определение: КС-грамматика G(VT,VN,P,S) называется атрибутной, если выполняются следующие условия:

1) Каждому символу х VT VN сопоставлено два непересекающихся множества: множество синтезированных атрибутов А0 (х) и множество унаследованных атрибутов А1(х),А1(S)= к А (х)= х VT; пусть А(х)=А0(х) А1(х)

2) Каждый атрибут α имеет множество значений(возможно, бесконечное)

3) С каждым правилом X0→ X1X2…Xn Р,n≥0, связывается множество семантических правил, которые определяются функциями вида:

:xx…x->при ≤i≤n и некоторых αА(xi), если i=0 или α А1(xi), i>0, где t=t(i,α)≥0 и αjj(i,α)А(Xkj), 0≤kj=kj(i,α)≤n,i≤j≤t.

Другими словами функция задаёт правило вычисления значения атрибута α символа хi по значениям некоторых атрибутов символов X0,X1,…,Xn. Атрибутная грамматика связывает атрибуты с вершинами синтаксического дерева вывода. Семантические правила вычисления значений атрибутов, соответствующие правилу КС- грамматики, применяются для всех вхождений этого правила в дерево вывода. Синтезированные атрибуты некоторой вершины хранят информацию, которая синтезируется из поддерева этой вершины и передаётся вверх к корню дерева. Унаследованные атрибуты служат для хранения информации, которая передаётся сверху вниз от корня дерева к его листьям. Фактически унаследованные атрибуты определяют контекст, в котором погружена вершина вместе со своим поддеревом.

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

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

 

Определение: Пусть G(VT,VN,P,S) – КС грамматика. ∆-множество операционных символов. Каждому правилу A0→x1A1x2A2…xnAnXn+1 Р, где Ai VN, xi+1 VT*,0≤i≤n, будет соответствовать правило A0→y1A1y2A2…ynAnyn+1, yi+1 ∆*. Простой СУ – схемой называется пятёрка T=(VT,∆,VN,R,S), где R – множество пар правил (A0→x1A1x2A2…Anxnxn+1,A0→y1A1y2…ynAnyn+1). Обозначим пару таких правил через (A0→α,A0→α').

Множество пар терминальных цепочек (х,у)синхронно выводимых из пары цепочек (S,S) с помощью СУ –правил (A0→α,A0→α') называется простым синтаксически управляемым переводом.

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

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

Определение: КС-грамматика, у которой множество терминальных символов разбито на множество входных символов VT и множество операционных символов ∆ называется трансляционной. Предложения языка порождённые трансляционной грамматикой называется активными цепочками.

 

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

Определение: Атрибутной трансляционной грамматикой называется трансляционная грамматика с атрибутами и семантическими правилами вычисления значений атрибутов.

Определение:АТ- грамматика называется L-атрибутной, если выполняются следующие условия:

1) Пусть x0→x1x2…xn P – правило АТ- грамматики, – семантическая функция для вычисления унаследованного атрибута α Аi(xi) 1≤i≤n. Тогда каждый аргумент - либо атрибут β А1(x0), либо произвольный атрибут А(xj) 1≤j≤n.

2) Пусть - функция для вычисления синтезированного атрибута α А0(x0). Тогда каждый аргумент либо атрибут А1(x0), либо произвольный атрибут А(xj), 1≤j≤n.

3) Если Xi – операционный символ и α А0(xi), в функции все аргументы представляют собой унаследованный атрибуты этого символа.

Для правила A→BC,например, значения атрибутов можно вычислить в таком порядке:

a. Унаследованные атрибуты символа А;

b. Унаследованные атрибуты В;

c. Синтезированные атрибуты символа В;

d. Унаследованные атрибуты символа С;

e. Синтезированные атрибуты символы С;

f. Синтезированные атрибуты символа А.

Этот порядок соответствует обходу дерева сверху вниз и слева направо. Спускаясь вниз от вершины, вычисляем унаследованные атрибуты, поднимаясь вверх к вершине, вычисляем синтезированные атрибуты.

Операционные символы АТ – грамматики можно интерпретировать как вызовы семантических процедур, которые реализуют соответствующие семантические правила для вычисления (с учётом контекстных условий) специального атрибута <объектная программа>. Очевидно, контекстные условия должны определяться унаследованными атрибутами операционных символов. При передаче значений атрибутов операционные символы употребляются, когда требуется обозначить сложную операцию, связанную с проверкой контекстно-зависимых соотношений для атрибутов и с вычислением их значений.

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

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




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 797; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.