Главная » Просмотр файлов » В.А. Серебряков - Теория и реализация языков программирования

В.А. Серебряков - Теория и реализация языков программирования (1114953), страница 38

Файл №1114953 В.А. Серебряков - Теория и реализация языков программирования (В.А. Серебряков - Теория и реализация языков программирования) 38 страницаВ.А. Серебряков - Теория и реализация языков программирования (1114953) страница 382019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 38)

. . an можно предварительно вычислить (под длиной выражения имеется в виду длина подстроки, начинающейся с символа кода операции и заканчивающейся последним символом,входящим в выражение для этой операции). Поэтому можно проверить,сопоставимо ли некоторое правило с подцепочкой ai . . . ak входной цепочкиa1 . . . an , проходя слева-направо по ai . . . ak . В процессе прохода по цепочкепредварительно вычисленные длины префиксных выражений используютсядля того, чтобы перейти от одного терминала к следующему терминалу, пропуская подцепочки, соответствующие нетерминалам правой части правила.Рассмотрим вновь пример рис. 9.23. В префиксной записи приведенныйфрагмент программы записывается следующим образом:= + a x + @ + + b y @ + i z 5Образцы, соответствующие машинным командам, задаются правиламиграмматики (вообще говоря, неоднозначной).

Генератор кода анализируетвходное префиксное выражение и строит одновременно все возможные деревья разбора, например, с помощью алгоритма Кока–Янгера–Касами. После окончания разбора выбирается дерево с наименьшей стоимостью. Затемпо этому единственному оптимальному дереву генерируется код.9.10.5. Атрибутная схема для алгоритма сопоставления образцов.Алгоритмы 9.1 и 9.2 являются «универсальными» в том смысле, что конкретные грамматики выражений и образцов являются, по существу, параметрами этих алгоритмов. В то же время для каждой конкретной грамматикиможно написать свой алгоритм поиска образцов.

Например, в случае нашей9.10. Генерация оптимального кода методами сопоставления образцов211грамматики выражений и образцов, приведенных в табл. 9.2, алгоритм 9.2может быть представлен атрибутной грамматикой, приведенной ниже.Наследуемый атрибут Match содержит упорядоченный список (вектор) образцов для сопоставления в поддереве данной вершины. Каждый из образцовлибо имеет вид <op op–list> (op — операция в данной вершине, а op–list— список ее операндов), либо представляет собой нетерминал N . В первомслучае op–list «распределяется» по потомкам вершины для дальнейшего сопоставления. Во втором случае сопоставление считается успешным, если естьправило N → op {P ati }, где w состоит из образцов, успешно сопоставленныхпотомкам данной вершины.

В этом случае по потомкам в качестве образцовраспределяются элементы правой части правила. Эти два множества образцовмогут пересекаться. Синтезируемый атрибут Pattern — вектор логическихзначений — дает результат сопоставления по вектору-образцу Match.Таким образом, при сопоставлении образцов могут встретиться два случая.1.

Вектор образцов содержит образец <op {P ati }>, где op — операция,примененная в данной вершине. Тогда распределяем образцы P ati по потомкам и считаем сопоставление по данному образцу успешным (истинным), если успешны сопоставления элементов этого образца по всемпотомкам.2. Образцом является нетерминал N . Тогда рассматриваем все правилавида N → op {P ati }. Вновь распределяем образцы P ati по потомками считаем сопоставление успешным (истинным), если успешны сопоставления по всем потомкам.

В общем случае успешным может бытьсопоставление по нескольким образцам.Отметим, что в общем случае по потомкам одновременно распределяютсянесколько образцов для сопоставления.В приведенной ниже атрибутной схеме не рассматриваются правила выбора покрытия наименьшей стоимости (см. подраздел 9.10.3).

Выбор оптимального покрытия может быть сделан еще одним проходом по деревуаналогично тому, как это было сделано выше. Например, в правиле с ’+’имеются несколько образцов для Reg , но реального выбора одного из нихне осуществляется. Кроме того, не уточнены некоторые детали реализации,в частности, конкретный способ формирования векторов Match и Pattern.В тексте употребляется термин «добавить», что означает добавление очередного элемента к вектору образцов. Векторы образцов записаны в угловыхскобках.RULEStat ::= ’=’ Reg Reg212Глава 9. Генерация кодаSEMANTICSMatch<2>=<’+’ Reg Const>;Match<3>=<Reg>;Pattern<0>[1]=Pattern<2>[1]&Pattern<3>[1].Этому правилу соответствует один образец 2.

Поэтому в качестве образцов потомковчерез их атрибуты Match передаются, соответственно,<’+’ Reg Const> и <Reg>.RULEReg ::= ’+’ Reg RegSEMANTICSif (Match<0> содержит Reg в позиции i){Match<2>=<Reg,Reg,Reg>;Match<3>=<Const,Reg,<’@’ ’+’ Reg Const>>;}if (Match<0> содержит образец <’+’ Reg Const>в позиции j){добавить Reg к Match<2> в некоторой позиции k;добавить Const к Match<3> в некоторой позиции k;}if (Match<0> содержит образец <’+’ Reg Const>в позиции j)Pattern<0>[j]=Pattern<2>[k]&Pattern<3>[k];if (Match[0] содержит Reg в i-й позиции)Pattern<0>[i]=(Pattern<2>[1]&Pattern<3>[1])|(Pattern<2>[2]&Pattern<3>[2])|(Pattern<2>[3]&Pattern<3>[3]).Образцы, соответствующие этому правилу, следующие:(4) Reg → ’+’ Reg Const,(5) Reg → ’+’ Reg Reg ,(6) Reg → ’+’ Reg ’@’ ’+’ Reg Const.Атрибутам Match второго и третьего символов в качестве образцов при сопоставлении могут быть переданы векторы <Reg, Reg, Reg> и <Const, Reg,<’@’ ’+’ Reg Const>> соответственно.

Из анализа других правил можнозаключить, что при сопоставлении образцов предков левой части данногоправила атрибуту Match символа левой части может быть передан образец<’+’ Reg Const> (из образцов 2, 3, 6) или образец Reg.RULEReg ::= ’@’ RegSEMANTICSif (Match<0> содержит Reg в i-й позиции)Match<2>=<<’+’ Reg Const>,Reg>;if (Match<0> содержит <’@’ ’+’ Reg Const>9.10. Генерация оптимального кода методами сопоставления образцов213Рис. 9.25в j-й позиции)добавить к Match<2> <’+’ Reg Const> в k позиции;if (Match<0> содержит Reg в i-й позиции)Pattern<0>[i]=Pattern<2>[1]|Pattern<2>[2];if (Match<0> содержит <’@’ ’+’ Reg Const>в j-й позиции)Pattern<0>[j]=Pattern<2>[k].Образцы, соответствующие этому правилу, следующие:(3) Reg → ’@’ ’+’ Reg Const,(7) Reg → ’@’ Reg .Соответственно атрибуту Match второго символа в качестве образцов при сопоставлении могут быть переданы <’+’Reg Const> (образец 3) или <Reg>(образец 7).

Из анализа других правил можно заключить, что при сопоставлении образцов предков левой части данного правила атрибуту Match могутбыть переданы образцы <’@’ ’+’ Reg Const> (из образца 6) и Reg.214Глава 9. Генерация кодаRULEReg ::= ConstSEMANTICSif (Pattern<0> содержит Const в j-й позиции)Pattern<0>[j]=true;if (Pattern<0> содержит Reg в i-й позиции)Pattern<0>[i]=true.Для дерева рис. 9.23 получим значения атрибутов, приведенныена рис.

9.25. Здесь M обозначает Match, P — Pattern, C — Const, R —Reg.Г л а в а 10СИСТЕМЫ АВТОМАТИЗАЦИИПОСТРОЕНИЯ ТРАНСЛЯТОРОВСистемы автоматизации построения трансляторов (САПТ) предназначеныдля автоматизации процесса разработки трансляторов. Очевидно, что длятого, чтобы описать транслятор, необходимо иметь формализм для описания.Этот формализм затем реализуется в виде входного языка САПТ. Как правило, формализмы основаны на атрибутных грамматиках.

Ниже описаны двеСАПТ, получившие распространение: СУПЕР [4] и Yacc. В основу первойсистемы положены LL(1)-грамматики и L-атрибутные вычислители, в основувторой — LALR(1)-грамматики и S-атрибутные вычислители.10.1. Система СУПЕРПрограмма на входном языке СУПЕР («метапрограмма») состоит из следующих разделов:– заголовок;– раздел констант;– раздел типов;– алфавит;– раздел файлов;– раздел библиотеки;– атрибутная схема.Заголовок определяет имя атрибутной грамматики, первые три буквы имени задают расширение имени входного файла для реализуемого транслятора.Раздел констант содержит описание констант, раздел типов — описаниетипов.Алфавит содержит перечисление нетерминальных символов и классов лексем, а также атрибутов (и их типов), сопоставленных этим символам. Классылексем являются терминальными символами с точки зрения синтаксическогоанализа, но могут иметь атрибуты, вычисляемые в процессе лексическогоанализа.

Характеристики

Тип файла
PDF-файл
Размер
4,93 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее