Главная » Просмотр файлов » Теория синтаксического анализа, перевода и компиляции - Том 2

Теория синтаксического анализа, перевода и компиляции - Том 2 (943929), страница 39

Файл №943929 Теория синтаксического анализа, перевода и компиляции - Том 2 (Теория синтаксического анализа, перевода и компиляции) 39 страницаТеория синтаксического анализа, перевода и компиляции - Том 2 (943929) страница 392013-09-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

роста . П я „цвтвкцзапня" состоят в тцн, цтобы в третьей строке заменить Т, нв А, е четвертую строку цмброгцзь. Заз Оператор аида А — ОВ,...В, означает, что г-местную аоервг ь вцню 0 надо применить к текущим зна'!синям переменных В, ..., В„ а полученное значение присвоить переменной А, Соответствующий язык будет формальна определен в разл. 11.!. Многоадресный код с явно именуемыми результатами при каждом присваивании требует име- д ни временной переменной для того, чтобы связать с ним значение выражения, стоящего справа в операторе присваивания. Можно избежать необходимости употреблять временные переменные, если пользоваться многоадресным кодом с с неявно именуемыми результатами В такой записи каждый оператор приснаивания помечается числом.

о Затем мы убираем левую часть опе- ратора и обрапгаемся к промежу- Рве. 9.!. савгедгцзгщце дерево. точным результатам при помощи числа, приписанного оператору, вырабатывающему промежуточный результат. Например, выражсгще (9.1.1) будет представ. лена последовательностью 1: 2: 3: 4: ц.~ галь пеяеводд в пгацессе компиляции межуточной программы значительно труднее, чем в представтеняе ее в виде связной списочной структуры. В качестве второго примера рассмотрим представление опе- ратора (9.1.2) В! = / Вйеп 5, е!ве 5, где 5, и 5, обозначают произвольные операторы. Возможным ностфиксным польским представлением этого опе- ратора может быть 3 Е!3ОЛЕз йь ЗЕАЕЗЕ 5; В 3НМР 5; Здесь 5, и 5,— постфиисные представления длн 5, и 5, соответ- ственно; Е!ЗНАЙ--бинарггая операция, дающая значение истина, <нгереаюр„егдеьд !4 <Виррмелж> Фйвн <д глдюерь ° !вв веерллер Л <ЕЬ(ЕЯНВЕЬЕ> <ИтВОШВДЕЮ <аРЕМЕММРР Е ' Х 1 1 ! Омрдгмммр > р 1 Рнс 9.2.

дерева выводе. если оба аргумента равны, и ложь в противном случае; !.,— константа, именующая начало 5;; ЗЕЛСЗЕ- бинарная операция, нызывающая переход на место, указываемое вторым аргументом, если значение первого аргумента ложь, и ие вызывающая никаких действий, если значение первого аргумента истина; константа й именует первую сзедующую за 5,' команду; ЗЕЛ!Р— унарная операция, вызывающая переход на место, указываемое аргументом. Дерево выпада оператора (9.1.2) приведено на рис. 9.2. Существенную информацию, содержащуюся в этом дереве вывода, можно представгщь синтаксическим деревом, приведенным на рнс.

9.3, где 5( н 5:, †синтаксическ деревья 5, и 5,. Синтаксический анализатор, гевернруюгцнй промежуточную нраграмму, разбирал бы выражение (9.1.2), просматривая дерево на рис. 9.2, но его выходом была бы последовательность команд построения синтаксического дерева рнс.

9.3. УПРАЖНЕНИЯ ГЛ. Ь ПЕРЕВОД И ГЕНЕРАЦИЯ КОДА УПРАЖНЕНИЯ Ркс. 9.3. Оппаксвческсе дерева 20з В синтаксическолг дереве, вообще говоря, внутренняя вершина представляет операцию, операндами которой служат ее врямые потомки. Листья синтаисического дерева соответствуют идентификаторам. Фактически листья являются указателями на таблицу имен, в которой хранятся имена и атрибуты соответствующих идентификаторов. <РЛЕЯРНАЯ „ЕГЛУ"Р е1асть выхода синтаксического анализатора составляют команды занесения информации в таблицу имев. Например, конструкция исходной программы вида 1МТЕОЕК ! будет преобразована в команду, заносяшую атрибут ьцелос" в позицию таблицы имен, зарезервированную для идентификатора !. Явного представления Атой конструкции в пронежуточной программе не будет.

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

Например, оператор присваивания вида А +ВС может отображаться в три машинные команды ЕОАЛ В АРР С 5ТОКЕ А Здесь мы предполагаем, что используется однопроцессорная манена, в которой команда СОАЛ В помещает содержимое ячейки В в сумматор, АРР С складывает') содержимое ячейки памяти С с содержимым сумматора, а 5ТОКЕ А помещает содержимое сумматора в ячейку А. Команда 5ТОКЕ содержимого сумматора не изменяет. Однако если в сумматоре уже хранилось содержимое ячсики В (например, в результате выполнения предыдущей команды присваивания В - ) РЕ), то команда ЕОДР В становится лишней.

Кроме того, если следующая команда имеет вид В +АС и А нигде больше не используется, то не нужна и команда 5ТОКЕ А В равд 11.1 и 1!.2 мы изложим несколько приемов генерации кода по операторам многоадресного представления. 9.!.1. Нарисуйте синтакслгческие деревья для следующих операторов входного нзыка; (а) А .=.( — С),'(В + С) (в Фортране), (б) 1= 1.ЕМОТН (С1,)С2) [в ПЛ,'1), (в) Я В>С !Ьеп В Л > Е !неп А г = В ф С е1зе А: =  — С еЬе А;.= ВЕС (в Алголе). 9.!.2. Найдите постфнкспые польские представления для программ из упр. 9,1.!. 9.!.3.

Сгеперируйте многоадресный код с явно именуемыми резуленатами для операторов нз упр. 9.1.1. 9,!А. Постройтс детерминированеый МП-преобразователь, Отабражагоший префиксную польскую запись в посгфиксную польскую запись. 9.!.5. Покажлгте, что не существуетдетерминировавного МП- преобразователя, отображагокдего постфиксную польск)ю запись в префиксную польскую запись. Существуст ли недетерминированный МП.преобразователь, выполпиюпшй такое отображение) ,Уггязомиег См. теорему 3.15. 9.!.б.

Разработайте аягоритм вычисления постфиксного польского выражения, использующий магазин. 9.1.7. Сконструируйте МП-преобразователь, который, получая на вход выражение ж из ь(РА), порождает на выхопе по- ')ДАА простаты тоеустмм, чю г еьс гомько Одев гкя Арифметякк Ггве гккех геаоа нгскгл ко, еьервмгр Ариф тика с фексировкееой е плеземшей точкой, то еерееол Операеии ф будет эаьессгь от иефгрмькяе сб Атркбу ах кмге 3 и С, лапксьенок в гкблеке янек. ГЛ З ПЗРЕВОД И ГКИГРЛЦИЯ КОЛЛ Э З СИНТЛКСИЧЕСКИ УПРЛВЛЯЗМЫЕ ПВРВВОДЫ следовательность команд построения синтаксического дерева (или многоадресного кода) для ш. 9.1.8.

Сгенерируйте программы на языке ассемблера наиболее зникомой Вам машины для программ из упр. 9.!.1. *9.1.9. Разработавте алгоритмы для генерация программ на языке ассемблера наиболее знакомой Вам машины, соответствующих промежуточным программам, представляющим арифмети ческне действия и присваивания, когда промежуточная программа является (а) программой в постфиксной польской записи, (б) программой в многоадресном коде с явно именуемыми результатами, (в) программой в многоадресном коде с неявно именуемыми результатами, (г) некоторым представлением синтаксического дерева. *9.1.10.

Сконструируйте язык, удобный для представления некоторого подмножества Фортрана (или ПЛД, нлн Алгола). Это подмножество должно включать операторы присваивания и некоторые операторы управления. В нем должны допусиаться переменные с индексами. **9.1.! 1. Постройтс генератор кода, отображающий промеуку. точную программу из упр.

9.!.!О в машинный код наиболее знакомой Вам машины. Замечания по литературе К сожзлвхпю, даже дпя прогтих копгпзукзтяй хлою го язикл нюзьзя точно определять пзплучапй <збьектз~ий к| л Те» оо мвпее су~пествуог рхд кхпг н отзыв, пасвяюшпыь переводу рвзлпчхыь языков нрогрзннпровлнпя. Ьзкус н лр.

!!967! полробхо опхсзлн рвкнпй козпплятор Фортрзпз Репдтлл в Рассел (1964(, Грву н др. (1967! Взучпзю ззджу ргмлвззпвп Ллголз 60. Нвкоториз лттзлп реализации нзнкз Ппз! прпводспн в ИБМ (1969), Во нн гхх работях Взлагюотся нет лн, полезное прп гзптрз~твл кода. Кнут (1966В! Всслелолвл рззлпчпие нетоди рвоорздзтенпя памяти. Элсов и Ревк (1970! рассмотрели вопрос о гепсрапн кода для йревоввлп их структур проножуточпою язнкв.

Уплкокс (1971! предствввл пегколько опиях ноделсй дп проколов гтвтрзнпв кола 9.2. СИНТАКСИЧЕСКИ УПРАВЛЯЕМЫЕ ПЕРЕВОДЫ В настоящем разделе мы рассмотрим модель компилятора, в которою синтаксический анализ и генерация кода объединены в одну фазу. Такую модель ыожно представлять себе как компилятор, в котором операции генерации кода совиещены с операциями разбора. Для описания компиляции такого типа часто употребляется термин синтпкгичгски управляемая комг1иляВВВ.

Описываемые здесь методы можно применять также при генерации пронежуточного, а пе только объектного кода, или кода на языке ассемблера. Мы приводим один пример перевода В промежуточный код, остальные примеры о1носятся к коду иа языке ассемблера. Нашим отправным пунктом будет схема синтаксически управ. ляемого псрепода (СУ-схема), описанная в гл. 3. Мы покажем, как осуществить синтаксически управляемый перевод с помощью детерминированного МП-преобразователя, выпотняющего нисходящий илв восходищий анализ.

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

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

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

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

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

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