Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Иванова Г.С., Ничушкина Т.Н. - Основы конструирования компиляторов

Иванова Г.С., Ничушкина Т.Н. - Основы конструирования компиляторов, страница 2

PDF-файл Иванова Г.С., Ничушкина Т.Н. - Основы конструирования компиляторов, страница 2 Языки интернет-программирования (17401): Книга - 5 семестрИванова Г.С., Ничушкина Т.Н. - Основы конструирования компиляторов: Языки интернет-программирования - PDF, страница 2 (17401) - СтудИзба2017-12-28СтудИзба

Описание файла

PDF-файл из архива "Иванова Г.С., Ничушкина Т.Н. - Основы конструирования компиляторов", который расположен в категории "". Всё это находится в предмете "языки интернет-программирования" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "языки интернет-программирования" в общих файлах.

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

Метод заключается в следующем.1. Каждому символу строки Si ставится в соответствие индекс Ni по алгоритму:N[0]:=0J:=1Цикл-пока S[J]≠’_’Если S[J] = ‘(‘ или S[J] = <операнд>тоN[J]:=N[J-1] +1иначе N[J]:=N[J-1] -1Все-еслиJ:=J+1Все-циклN[J]:=02.Определяется наибольшее значение индекса в структуре вида k(k-1)k илипри наличии скобок (k-1)k(k-1)k(k-1) и строится соответствующая тройка.3.

Обработанные символы вместе со скобками удаляются, и на их место ставитсязначение N=k-1.4. Операции 2, 3 повторяются до завершения выражения.Пример. (((a+b)*c)+d)/ka) S:( ( (a+ b)*c )+d) /kN: 0 1 2 3 4 3 4 3 2 3 2 1 2 1 0 1 0=> T1 = a+bОглавление8b) S:( ( T1 * c ) + d ) / kN: 0 1 2 3 2 3 2 1 2 1 0 1 0c) S:( T2 + d ) / kN: 0 1 2 1 2 1 0 1 0d) S:=> T2 = T1*c=> T3 = T2+dT3 / kN: 0 1 0 1 0=> T4 = T3/kНедостаток метода – требование полной скобочной структуры. Как правило, для этого используется специальная программа, которая вставляет скобки.Решение прочих проблем компиляции было не таким простым. Первые компиляторыявлялись крайне сложными программами, написание которых требовало неординарныхспособностей, и содержали большое количество ошибок.

Так первый компилятор языкаFortran потребовал 18 человеко-лет работы. С тех пор разработаны систематические технологии решения многих задач компиляции, предложен соответствующий инструментарий, в результате чего небольшой компилятор может стать темой курсового проекта.Оглавление9Контрольные вопросы1.Назовите основные типы программ, включающих элементы трансляторов. Пояс-ните их различия.Ответ.2.Назовите основные этапы процесса компиляции.

Уточните задачи каждого эта-па.Ответ3.В чем заключается метод Рутисхаузера?ОтветОглавление102Основные положения теории формальных грамматик2.1Формальная грамматика и формальный языкПредложения любого языка строятся из символов алфавита.Алфавит – непустое конечное множество символов, используемых для записипредложений языка. Например, множество арабских цифр, знаки «+» и «-»: A ={0,1,2,3,4,5,6,7,8,9,+,-} – алфавит для записи целых десятичных чисел, например: «-365»,«78», «+45».Строка – любая последовательность символов алфавита, расположенных один задругим.

Строки в теории формальных языков обозначаются строчными греческими буквами: α, β, γ … . Строка, содержащая 0 символов, называется пустой и обозначается символами e, ε или λ.Множество всех составленных из символов алфавита A строк, в которое входит пустая строка, обозначают A*. Множество всех составленных из символов алфавита Aстрок, в которое не входит пустая строка, обозначают A+. Откуда: A* = A+ ∪ {e}.Формальным языком L в алфавите A называют произвольное подмножество множества A*. Таким образом, язык определяется как множество допустимых предложений.Задать язык L в алфавите A значит либо перечислить все включаемые в него предложения, либо указать правила их образования. Перечисление бесконечно большого количества предложений невозможно.

Определение правил образования предложений осуществляют с использованием абстракций формальных грамматик.Формальная грамматика – это математическая система, определяющая язык посредством порождающих правил – правил продукции. Она определяется как четверка:G = (VT, VN, P, S),где VT – алфавит языка или множество терминальных (незаменяемых) символов;VN – множество нетерминальных (заменяемых) символов – вспомогательный алфавит, символы которого обозначают допустимые понятия языка, VT ∩ VN = ∅;V = VT ∪ VN – словарь грамматики;P – множество порождающих правил – каждое правило состоит из пары строк (α, β),где α ∈ V+ – левая часть правила, β ∈ V* – правая часть правила: α → β, где строка αдолжна содержать хотя бы один нетерминал;S ∈ VN – начальный символ – аксиома грамматики.Оглавление11Для описания синтаксиса языков с бесконечным количеством различных предложений используют рекурсию.

При этом если нетерминал в порождающем правиле расположен справа, то рекурсию называют правосторонней, если слева, то – левосторонней, а,если между двумя подстроками, то – вложенной.Пример. Определим грамматику записи десятичных чисел G0:VT = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -};VN = {<целое>, <целое без знака>, <цифра>, <знак>};P = {<целое> → <знак><целое без знака>, <целое> → <целое без знака>,<целое без знака> → <цифра><целое без знака>, //правосторонняя рекурсия<целое без знака> → <цифра>,<цифра> → 0, <цифра> → 1, <цифра> → 2, <цифра> → 3, <цифра> → 4,<цифра> → 5, <цифра> → 6, <цифра> → 7, <цифра> → 8, <цифра> → 9,<знак> → +, <знак> → - };S = <целое>.Для записи правил продукции обычно используют более компактные и наглядныеформы (модели): форму Бэкуса-Наура или синтаксические диаграммы (см.

далее).Форма Бэкуса-Наура (БНФ). БНФ связывает терминальные и нетерминальныесимволы, используя две операции: «::=» – «можно заменить на»; «|» – «или». Основное достоинство – группировка правил, определяющих каждый нетерминал. Нетерминалы приэтом записываются в угловых скобках. Например, правила продукции грамматики,рассмотренной выше можно записать следующим образом:<целое> ::= <знак><целое без знака>|<целое без знака>,<целое без знака> ::= <цифра><целое без знака>|<цифра>(правосторонняя рек.),<цифра > ::= 0|1|2|3|4|5|6|7|8|9,<знак> ::= +| - .Формальная грамматика, таким образом, определяет правила определения допустимых конструкций языка, т.

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

Сентенциальная форма, содержащая только терминальныесимволы, называется допустимой и представляет собой предложение языка.Для обозначения подстановки используют символ «⇒».Пример. Вывод строки «-45»:<целое> ⇒1⇒1<знак><целое без знака> ⇒2⇒2 <знак><цифра><целое без знака>⇒3⇒3 <знак><цифра><цифра> ⇒4⇒4 - <цифра><цифра> ⇒5⇒5 - 4<цифра> ⇒6⇒6- 45Вывод можно представить графически, в видеЦелоесинтаксического дерева, корнем которого является аксиома, а листья – образуют предложение языка (см.

ри-ЗнакЦБЗсунок 1).Неоднозначные грамматики. Существуют грамматики, в которых для одной строки можно построить-Цифра4Цифранесколько деревьев. Такие грамматики называютсянеоднозначными. Разбор неоднозначных грамматик затруднен, поэтому их, если возможно, преобразуют в однозначные или ограничивают правилами.ОглавлениеЦБЗ5Рисунок 1 – Синтаксическое дерево13Пример 1. Строка х+х+х, порождаемая грамматикой с правилами S → S + S и S → x,имеет два дерева разбора (см. рисунок 2, а–б).

Описывающая тот же язык однозначнаяграмматика использует правила: S → S + x и S → x (см. рисунок 2, в).SSSSS+SS+S+SххS+ххахSхбSS++хххвРисунок 2 – Деревья разбора неоднозначной грамматики (а, б) и единственное дерево однозначной (в)Пример 2. Конструкция if <лог. выр.> then <оператор> [else <оператор>] при вложении неполного варианта получается неоднозначной. Поскольку ее преобразование невозможно, разбор ограничен правилом вложенности.Грамматический разбор – процедура построения синтаксического дерева для конкретного предложения языка. Построение такого дерева позволяет однозначно доказать,что анализируемая строка языка является допустимой, т.е.

принадлежит конкретному языку.Грамматический разбор может осуществляться в разной последовательности,причем дерево можно строить как «сверху» – от аксиомы, так и «снизу» – от предложения. Соответственно существуют нисходящий и восходящий методы разбора. При этомпредложения языка можно рассматривать слева направо и наоборот.

Соответственно различают левосторонний и правосторонний разбор. Левосторонний разбор используютчаще, т. к. мы читаем слева направо.Оглавление142.2.1Левосторонний восходящий грамматический разбор(«слева-направо»)Метод разбора «слава-направо» применим, если грамматика не содержит правил справосторонней рекурсией.При осуществлении грамматического разбора сентенциальные формы просматриваются слева направо и последовательно «свертываются» посредством замены подстроки,совпадающей с правой частью правила («основы») на левую часть того же правила.Правила подстановки должны проверяться, начиная с самого сложного, иначе сложные правила никогда не будут применены, и разбор не удастся.В общем случае при разборе возможны возвраты, поскольку может быть выбранонеподходящее правило подстановки.Пример. Разобрать строку «-45»Правила грамматики:<целое> ::= <знак><целое без знака>|<целое без знака>,<целое без знака> ::= <целое без знака><цифра>|<цифра>,<цифра > ::= 0|1|2|3|4|5|6|7|8|9,<знак> ::= +| - .Последовательность получения сентенциальных форм данным методом:<знак> 45<знак> <цифра>5<знак> <цбз>5<целое> 5 – Тупик! Возвращаемся и ищем другой вариант подстановки!<знак><целое>5 – Тупик! Возвращаемся и ищем другой вариант подстановки!<знак> <цбз><цифра><целое> <цифра> – Тупик! Возвращаемся и ищем другой вариант подстановки!<знак> <целое> <цифра> – Тупик! Возвращаемся и ищем другой вариант!<знак> <цбз><целое>Необходимость предусмотреть возможность возвратов требует хранить всю информацию о каждом шаге разбора, что требует много памяти и существенно усложняет процесс написания программы разбора.Оглавление152.2.2Левосторонний нисходящий грамматический разбор («сверху-вниз»)Метод разбора «сверху-вниз» применим, если грамматика не содержит правил слевосторонней рекурсией.Метод предполагает последовательное выдвижение гипотез, начиная с аксиомы, ихдоказательство посредством подбора правил, которым удовлетворяет разбираемый фрагмент, и выдвижения новых гипотез относительно не разобранной части предложения.Правила подстановки также должны проверяться, начиная с самого сложного, иначецель разбора не будет достигнута.При наличии правил с левосторонней рекурсией процедура разбора становится бесконечной.В общем случае при разборе возможны возвраты, поскольку может быть выбранонеподходящее правило подстановки.Пример.

Разобрать строку «-45»Правила грамматики:а) <целое> ::= <знак><целое без знака>|<целое без знака>б) <целое без знака> ::= <цифра><целое без знака>|<цифра>,в) <цифра > ::= 0|1|2|3|4|5|6|7|8|9,г) <знак> ::= +| - .Последовательность разбора:Распознано Текущий символ Цель или подцель Правило Истина?1-Целоеа1да2-Знакг1нетг2да34-54Цбзб1да4Цифрав1-в4нетв5да67-485Цбзб1нет5Цифрав1-в5нетв6да910_Цбзб1нет11_Цифрав1-в10нет12_Цбзб2нет13_Цифрав1-в10нет5Цбзб2да14-45-4Оглавление16155Цифра16в1-в5нетв6даНедостаток метода, как и в предыдущем случае, заключается в том, что в программеразбора следует хранить всю информацию о каждом его шаге.Выбор метода разбора для грамматики определяется видом правил продукции языка.Оглавление172.3Расширенная классификация грамматик ХомскогоВ зависимости от вида правил грамматики различают:тип 0 – грамматики фразовой структуры или грамматики «без ограничений»:α → β, где α ∈V+, β ∈ V*– в таких грамматиках допустимо наличие любыхправил вывода, что свойственно грамматикам естественных языков;тип 1 – контекстно-зависимые (неукорачивающие) грамматики:α → β, где α ∈V+, β ∈ V*, | α | ≤ | β | – в этих грамматиках для правил видаα X β → α x β возможность подстановки строки х вместо символа X определяется присутствием подстрок α и β, т.

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