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

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

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

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

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

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

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

е. контекста, что также свойственнограмматикам естественных языков;(расширение допускает не более одного правила вида A → e, где A∈VN);тип 2 – контекстно-свободные грамматики:A → β, где A∈VN, β∈ V* – поскольку в левой части правила стоит нетерминал, подстановки не зависят от контекста;тип 3 – регулярная грамматика:A → α, A → αB, где A, В∈VN, α ∈ VT;(расширение допускает не более одного правила вида S → e, но в этом случае аксиома не должна появляться в правых частях правил).Классификация построена по правилам иерархии, т.

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

Существует простой метод проверки регулярности языка, основанныйна лемме о разрастании, смысл которой заключается в следующем: в строке регулярногоязыка всегда можно найти непустую подстроку, повторение которой произвольное количество раз порождает новые строки того же языка.Пример. Язык описания целых чисел. Из строки «+23» можно построить строки:22222, 23232323 и т. д. того же языка.Еще одно свойство языка позволяет сразу определить, что язык не относится к классу регулярных – это самовложение, т. е. наличие правил вида A ⇒+ α1Aα2, где α1, α2 ∈ V+.Пример.

Язык скобок, описываемый правилами: S → (S), S → SS, S → e. Грамматикаэтого языка является грамматикой с самовложением, принадлежит классу КС и не приводима к регулярной.Лемма о разрастании КС языков формулируется следующим образом: в строке, принадлежащей КС-языку, всегда можно найти две подстроки с ненулевой суммарной длиной, одновременное повторение которых произвольное количество раз порождает новуюстроку того же языка.Пример. Язык скобок. Из строки «()» можно построить строку: ((())) и т.

д. того жеязыка.Проверка соответствия строк языку осуществляется специальной программой – распознавателем. Распознаватели могут использоваться для определения языка также как играмматики. Чем шире класс распознаваемых грамматик, тем сложнее класс соответствующих распознавателей. Доказано, что:- грамматики типа 3 распознаются конечными автоматами;- грамматики типа 2 распознаются автоматами с магазинной памятью;- грамматики типа 1 распознаются линейными ограниченными автоматами;- грамматики типа 0 распознаются машинами Тьюринга.Оглавление19Контрольные вопросы1.

Определите, что такое алфавит языка.Ответ.2. Дайте определение формального языка. Почему формальные языки обычно неопределяют перечислением допустимых предложений?Ответ.3. Дайте определение формальной грамматики.Ответ.4. Что такое «Форма Бэкуса-Наура»? Для чего она используется?Ответ.5. Определите цель грамматического разбора предложений языка.Ответ.6. В чем заключается левосторонний восходящий грамматический разбор? Назовите,в каких случаях он не применим и определите его основной недостаток.Ответ.7. В чем заключается правосторонний нисходящий грамматический разбор? Назовите, в каких случаях он не применим и определите его основной недостаток.Ответ.8. Назовите основные типы грамматик по Хомскому. Какие грамматики используют вязыках программирования?Ответ.Оглавление203Распознавание регулярных грамматик3.1Конечный автомат и его программная реализацияРаспознаватели регулярных грамматик строятся на конечных автоматах. Конечныйавтомат – это математическая модель, свойства и поведение которой полностью определяются пятеркой: M = (Q, Σ, δ, q0, F),где Q – конечное множество состояний;Σ – конечное множество входных символов;δ(qi, сk) – функция переходов (qi – текущее состояние, сk – очередной символ);q0 – начальное состояние;F = {qj} – подмножество допускающих состояний.Конечные автоматы – одна из базовых моделей, используемых при проектированиипрограммного и аппаратного обеспечения средств вычислительной техники.Пример.

Автомат «Чет-нечет» описывается следующим образом:Q = {Чет, Нечет};Σ = {0, 1};δ(Чет, 0) = Чет, δ(Нечет, 0) = Нечет, δ(Чет, 1) = Нечет, δ(Нечет, 1) = Чет;q0 = Чет;F = {Чет}Строка «10110» приведет такой автомат в состояние Нечет, т. е. будет отвергнута, астрока «110011» – в состояние Чет, т. е. будет принята.Для представления функции переходов конечного автомата помимо аналитическойформы могут использоваться: таблица (см. таблицу 4), граф переходов состояний (см. рисунок 4) и синтаксическая диаграмма (см. рисунок 5).Таблица 3 – Функция переходовq00σЧетНечетЧет11Нечет010Чет1НечетНечет ЧетНечетЧет1Чет0Рисунок 4 – Граф переходовРисунок 5 – Синтаксическая диаграммаРазработчик автомата обычно использует представление автомата графом или синтаксической диаграммой.

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

таблицу 5).Таблица 4 – Дополненная таблица конечного автоматаqсЧет0Чет1Не-Символы завершенияКонецДругие символыОшибкаНечетНе-четЧетОшибкаОшибкачетПусть S – строка на входе автомата;Ind – номер очередного символа;q – текущее состояние автомата;Table – таблица, учитывающая символы завершения и другие символы.Тогда алгоритм работы автомата можно представить следующим образом.Ind := 1q := q0Цикл-пока q ≠ «Ошибка» и q ≠ «Конец»q = Table [q, S[Ind]]Ind := Ind +1Все-циклЕсли q = «Конец»то «Строка принята»иначе «Строка отвергнута»Все-еслиОглавление223.2Построение лексических анализаторовПри построении лексических анализаторов конечные автоматы используют для распознавания лексем второго типа (базовых понятий языка). Эти понятия можно описать врамках самых простых, регулярных грамматик и предложить для них эффективную технику разбора. Отделение сканера от синтаксического анализатора позволяет также сократитьвремя распознавания лексем, так как при этом появляется возможность использования оптимизированных ассемблерных команд, специально предназначенных для сканированиястрок.Алфавит автомата лексического анализатора – все множество однобайтовых (ANSI)или двухбайтовых (Unicode) символов.

При записи правил обычно используются обобщающие нетерминалы вида «Буквы», «Цифры». В процессе распознавания может формироваться описываемый объект, например, литерал или идентификатор.Пример. Распознаватель целых чисел. Синтаксическая диаграмма синтаксиса языкаописывается синтаксической диаграммой (см. рисунок 6).1ЦифраЗнак3РазделительК21 – начало разбора; 2 – распознан знак; 3 – целое; К – завершение разбораРисунок 6 – Синтаксическая диаграммаПо диаграмме строим таблицу переходов (см. таблицу 5), обозначая состояниеошибки символом «E». В таблице переходов указываем подпрограммы обработки, которые должны быть выполнены при осуществлении указанного перехода.

При выполненииэтих подпрограмм формируются указанные значения.Таблица 5 – Таблица переходовЗнак Цифра Разделитель Другие1 2, А1 3, А2Е, Д1Е, Д42 Е, Д2 3, А2Е, Д3Е, Д43 К, А3 3, А2К, А3Е, Д4а) Подпрограммы обработки:A0: Инициализация: Целое := 0; Знак_числа := «+».А1: Знак_числа := ЗнакА2: Целое := Целое*10 + ЦифраА3: Если Знак_числа = «-» то Целое := -Целое Все-еслиб) Диагностические сообщения:Оглавление23Д1: «Строка не является десятичным числом»;Д2: «Два знака рядом»;Д3: «В строке отсутствуют цифры»,Д4: «В строке встречаются недопустимые символы»Обозначим: S – строка на входе автомата; Ind – номер очередного символа; q – текущее состояние автомата; Table – таблица, учитывающая символы завершения и другиесимволы.Тогда алгоритм сканера-распознавателя можно представить следующим образом.Ind := 1q := 1Выполнить А0Цикл-пока q ≠ «Е» и q ≠ «К»Если S[Ind] = «+» или S[Ind] = «-»,то j := 1иначе Если S[Ind] ≥ «0» и S[Ind] ≤ «9»,тоj := 2,иначе j := 3Все-еслиВсе-еслиВыполнить Ai := Table [q, j].

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