Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Пример 35




Порядок выполнения

Пример 34

 

На рис. 54 показан граф зависимости для дерева разбора на рис. 52. Узлы в графе зависимости помечены числами. Имеется дуга узла 4 для T.type в узел 5 L.in, поскольку наследуемый атрибут L.in зависит от атрибута T.type согласно семантическому правилу L.in:= T.type для продукции D → TL. Две нисходящие дуги в узлы 7 и 9 появляются в силу зависимости L1.in от L.in в соответствии с семантическим правилом L1.in:= L.in для продукции L → L 1, id. Каждое из семантических правил addtype( id .entiy,L.in), связанных с L-продукциями, приводит к созданию фиктивного атрибута. Узлы 6, 8 и 10 построены для таких фиктивных атрибутов.

Топологическая сортировка направленного ациклического графа является упорядочением узлов графа т1 , т2,… тk, таким, что дуги направлены от узлов, расположенных в упорядоченной последовательности раньше, к узлам, расположенным поэтапно т.е. если тi, → тj — дуга от тi, к тj то тi, встречается в упорядоченной последовательности раньше тj.

Любая топологическая сортировка графа зависимости дает правильный порядок пополнения семантических правил, связанных с узлами дерева разбора, т.е. к моменту пополнения семантического правила b:=f(с1, с2, …,сk) атрибуты с12,…, ск доступны для вычисления f.

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

Каждая из дуг графа зависимости на рис. 45 направлена от узла с меньшим номером к узлу с большим номером. Следовательно, топологическая сортировка графа зависимости может быть выполнена просто записью узлов в порядке их номеров. После такой топологической сортировки получим следующую программу (an означает атрибут, связанный с узлом номер п в графе зависимости).

а4:= real;

а5:= а4 ;

addtype ( id3. entry, a5);

a7:= a5;

addtype ( id2. en try, a7,);

a9: = a7',

addtype ( id1. entry, a9);

Выполнение этих семантических правил вносит тип real в записи таблицы символов для каждого из идентификаторов.

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

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

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

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

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




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


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


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



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




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