Главная » Просмотр файлов » Лекции по конструированию компиляторов. В.А. Серебряков

Лекции по конструированию компиляторов. В.А. Серебряков (1134688), страница 12

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

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

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

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

Атрибутные грамматики, обладающиетаким свойством, называются L-атрибутными.При записи синтаксиса мы будем использовать расширенную БНФ.Элемент правой части синтаксического правила, заключенный в скобки [ ],может отсутствовать. Элемент правой части синтаксического правила,заключенный в скобки ( ), означает возможность повторения один илиболее раз. Элемент правой части синтаксического правила, заключенный вскобки [()], означает возможность повторения ноль или более раз.

Вскобках [] или [()] может указываться разделитель конструкций.Ниже дан синтаксис языка описания атрибутных грамматик.Атрибутная грамматика ::= 'ALPHABET'( ОписаниеНетерминала ) ( Правило )ОписаниеНетерминала ::= ИмяНетерминала'::' [( ОписаниеАтрибутов / ';')] '.'ОписаниеАтрибутов ::= ( ИмяАтрибута / ',') ':' ТипПравило ::= 'RULE' Синтаксис 'SEMANTICS' Семантика '.'Синтаксис ::= ИмяНетерминала '::=' ПраваяЧастьПраваяЧасть ::= [( ЭлементПравойЧасти )]ЭлементПравойЧасти ::= ИмяНетерминала| Терминал| '(' Нетерминал [ '/' Терминал ] ')'| '[' Нетерминал ']'| '[(' Нетерминал [ '/' Терминал ] ')]'Семантика ::= [( ЛокальноеОбъявление ])[( СемантическоеДействие ])СемантическоеДействие ::= Присваивание| [ Метка ] ОператорПрисваивание ::= Переменная ':=' ВыражениеПеременная ::= ЛокальнаяПеременная|АтрибутАтрибут ::= ЛокальныйАтрибут|ГлобальныйАтрибутЛокальныйАтрибут ::= ИмяАтрибута '<' Номер '>'ГлобальныйАтрибут ::= ИмяАтрибута '<' Нетерминал '>'Метка ::= Целое ':'| Целое 'Е' ':'| Целое 'А' ':'Оператор ::= Условный|ОператорПроцедуры|ЦиклПоМножеству73||ПростойЦиклЦиклСУсловиемОкончанияОписание атрибутной грамматики состоит из раздела описания атрибутови раздела правил.

Раздел описания атрибутов определяет состав атрибутовдля каждого символа грамматики и тип каждого атрибута. Правила состоятиз синтаксической и семантической части. В синтаксической частииспользуется расширенная БНФ. Семантическая часть правила состоит излокальных объявлений и семантических действий. В качествесемантических действий допускаются как атрибутные присваивания, так исоставные операторы.Метка в семантической части правила привязывает выполнениеоператора к обходу дерева разбора сверху-вниз слева направо.Конструкция "i : оператор" означает, что оператор должен быть выполненсразу после обхода i-й компоненты правой части.

Конструкция "i E :оператор" означает, что оператор должен быть выполнен, только еслипорождение i-й компоненты правой части пусто. Конструкция "i A :оператор" означает, что оператор должен быть выполнен после разборакаждого повторения i-й компоненты правой части (имеется в видуконструкция повторения).Каждое правило может иметь локальные определения (типов ипеременных). В формулах используются как атрибуты символов данногоправила (локальные атрибуты) и в этом случае соответствующие символыуказываются номерами в правиле (0 для символа левой части, 1 длясимвола правой части и т.д.), так и атрибуты символов предков левойчасти правила (глобальные атрибуты). В этом случае соответствующийсимвол указывается именем нетерминала. Таким образом, на деревеобразуются области видимости атрибутов: атрибут символа имеет областьвидимости, состоящую из правила, в которое символ входит в правуючасть, плюс все поддерево, корнем которого является символ, заисключением поддеревьев - потомков того же символа в этом поддереве(рис.

4.4).|.... N .. / \ .. /\ .. /\/\ .. / /\ /\ \ .. / -- -- \ ....N...........N.../\/\--Рис. 4.474Значение терминального символа доступно через атрибут VALсоответствующего типа.4.3.4. Классы атрибутных грамматик и их реализацияВ общем виде реализация атрибутных грамматик вызываетзначительные трудности. Это связано с тем, что множество значенийатрибутов, связанных с данным деревом, приходится вычислять всоответсвии со связями, которые образуют граф с произвольными связями.На практике стараются осуществлять процесс вычисления атрибутов,привязывая его к тому или иному способу обхода дерева. Рассматриваютмноговизитные, многопроходные и другие атрибутные вычислители. Этоведет как правило к ограничению допустимых зависимостей междуатрибутами, поддерживаемых вычислителем.Простейшими такими подклассами атрибутных грамматик,вычисления всех атрибутов для которых может быть осуществленоодновременно с синтаксическим анализом, являются S-атрибутные и Lатрибутные грамматики.

Атрибутная грамматика называется Sатрибутной, если все атрибуты на любом дереве для этой грамматикимогут быть вычислены снизу-вверх слева-направо (т.е. атрибутнаяграмматика имеет только синтезированные атрибуты). Все такие атрибутымогут быть вычислены в процессе разбора снизу-вверх.. Грамматиканазывается L-атрибутной, если все атрибуты на любом дереве для этойграмматики могут быть вычислены за один обход дерева сверху-внизслева-направо. Все такие атрибуты могут быть вычислены в процессеразбора сверху-вниз.Вычисление атрибутов для L-атрибутных грамматик можнопроизводить в процессе рекурсивного спуска. Для этого в каждойфункции, соответствующей нетерминалу, надо определить формальныепараметры, передаваемые по значению, для наследуюмых атрибутов, иформальные параметры, передаваемые по ссылке, для синтезируемыхатрибутов.

В качестве примера рассмотрим реализацию приведеннойвыше атрибутной грамматики.void int_part(float * V0, int * P0){if (Map[InSym]==Digit){ int I=InSym;InSym=getInSym();float V2;int P2;int_part(&V2,&P2);V0=I*exp(P2*ln(10))+V2;75P0=P2+1;else {V0=0;*P0=0;}}void fract_part(float * V0, int P0){if (Map[InSym]==Digit){ int I=InSym;InSym=getInSym();float V2;int P2=P0+1;fract_part(&V2,P2);V0=I*exp(-P2*ln(10))+V2;P0=P2+1;else {V0=0;}}void number(){ float V1,V3,V0;int P;int_part(&V1,&P);if (InSym!=’.’) error();fract_part(&V3,1);V0=V1+V3;}76Глава 5. Контекстные условия языковпрограммирования5.1. Описание областей видимости и блочной структурыЗадачей контекстного анализа является установление правильностииспользования объектов.

Наиболее часто решаемой задачей являетсяопределение существования объекта и соответствия его использованияконтексту, что осуществляется с помощью анализа типа объекта.Таким образом необходимо хранить объекты, их типы, уметьнаходить эти объекты и определять их типы, определять характеристикиконтекста. Совокупность доступных в даной точке объектов будемназывать "средой". Обычно среда программы состоит из частичноупорядоченного набора компонентE={DS1,...DSn}.Каждая компонента - это множество объявлений, представляющих собойпары <имя,тип>:DSi={<имя,тип>},где под типом будем подразумевать полное описание свойств объекта(объектом, в частности, может быть само описание типа).Корневаякомпонента(программа)процедурапроцедура(блок)процедура(блок)(блок)Рис. 5.1Между компонентами DSi и DSj имеет место отношение "DSiвключает DSj" тогда и только тогда, когда любой объект из DS i может77быть доступен из DSj (конкретный способ доступа определяетсяправилами видимости языка), но не наоборот.

Компоненты образуютдерево. Это дерево соответствует блокам или процедурам (рис. 5.1)Обычными операциями при работе со средой являются:- включить объект в компоненту среды;- найти объект в среде и получить доступ к его описанию;- образовать в среде новую компоненту, определеннымсвязанную с остальными;- удалить компоненту из среды.образомКомпоненты среды могут быть именованы. Поиск в среде обычно ведетсяс учетом упорядоченности компонент. Среда может включать в себя каккомпоненты, полученные при трансляции "текущего" текста программы,так и "внешние" компоненты.Для обозначения участков программы, в которых доступны те илииные описания, используются понятия "область действия" и "областьвидимости".

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

В дальнейшем изложение ведется на примереязыка Модула -2.5.2. Структура среды Модулы-2Имеются четыре рода языковых конструкций, которые могут содержатьописания: 1) программный модуль или модуль реализации; 2) модульопределения; 3) процедура; 4) локальный модуль."Корневую" компоненту среды в Модуле-2 образует программныймодуль или модуль реализации. Объекты этой компоненты могут бытьописаны в самом модуле или могут быть импортированы из другихмодулей определений.

Такой импорт может быть квалифицированным(from M import X,Y, ...;) или не квалифицированным (import M;).78ЭкспортирующийКомпонента Импортирующийлокальный модуль средылокальный модульMODULE M1;EXPORT A1;MODULE X1;IMPORT A1;A1A1MODULE M2;EXPORTQUALIFIED A2M2MODULE X2;FROM M2IMPORT A2;A2A2MODULE M3;EXPORT M31;MODULE M31;EXPORT A31;MODULE M4;EXPORT M41;M31A31MODULE XIMPORT M31;A31M41MODULE X4;FROM M41IMPORT A41;A41MODULE M41;EXPORTQUALIFIED A41;MODULE M5;EXPORTQUALIFIED M51;MODULE M51;EXPORT A51;MODULE M6;EXPORTQULIFIED M61;MODULE M61;EXPORTQUALIFIED A61;MODULE X3;IMPORT A31;A31A41M5M51MODULE XIMPORT M41;A41MODULE X5;FROM M5IMPORT M51;M51.A51A51M6M61MODULE X6;FROM M6IMPORT M61M61.A61A61Рис.

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

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

Список файлов лекций

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