46023 (Проектирование трансляторов)

2016-07-31СтудИзба

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

Документ из архива "Проектирование трансляторов", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "46023"

Текст из документа "46023"

ЛЕКЦИЯ 1

СУЩНОСТЬ ПРЕДМЕТА. СОДЕРЖАНИЕ КП. СРОКИ.

ОРГАНИЗАЦИЯ РАБОТ. МАТЕМАТИЧЕСКИЙ АППАРАТ.

СТРУКТУРНАЯ СХЕМА ТРАНСЛЯТОРА. ПРОХОДЫ ТРАНСЛЯТОРА.

СПИСОК ЛИТЕРАТУРЫ

Дорогие коллеги. В течении двух семестров мы будем зани-

маться интереснейшим разделом системного и теоретического прог-

раммирования - теорией проектирования трансляторов.

Представляюсь. Семикопенко Геннадий Петрович, к.т.н.

2 преподаватель - Дмитриенко Наталья Олеговна.

1 семестр: Будет прочитан курс основ проектирования трансля-

тора. Вы ознакомитесь с инструментальными средствами, которые ре-

комендуются для выполнения практической работы. В обязательном

порядке Вами будет разработано, согласовано и утверждено ТЗ на КП.

Завершается семестр зачетом. Его можно получить при выполне-

нии следующих условий:

- утвержденного ТЗ на КП;

- пояснительной записки к КП и ее защиты, либо традиционной

сдачи зачета по всему курсу.

Я рекомендую путь разработки ПЗ и ее защиты как наиболее для

нас выгодный. Текст ПЗ явится составной частью КП, а защищать то,

что Вы сами написали, намного легче. Сдача зачета все равно не

освобождает Вас от необходимости последующего составления ПЗ и ее

защиты во 2 семестре. Таким образом, разработка пояснительной

части КП в 1 семестре экономит время и студентам, и преподавате-

лям.

Цели проектирования:

- ознакомление с одним из существующих инструментов созда-

ния трансляторов - генераторов лексического и синтаксического

анализаторов;

- ознакомление с математическим аппаратом - формальными

грамматиками (G), используемыми для описания искуственных языков

(ИЯ);

- проектирование ИЯ (программирования, информационного, опи-

сательного и любых других);

- формальное описание ИЯ с использованием инструментальных

средств;

- отладка лексического (ЛА) и синтаксического (СА) анализа-

торов, входящих в состав проектируемого транслятора;

- разработка семантических программ транслятора;

- комплексная отладка транслятора на контрольных (тестовых)

примерах;

- и, наконец, завершающая подцель - защита КП. Содержание КП:

- введение, в котором Вы излагаете сведения о целях разра-

ботки КП, его связи с РИСКом, назначении проектируемого ИЯ;

- краткое описание используемого математического аппарата;

- описание инструментальных средств - генераторов лексичес-

ких и синтаксических анализаторов;

- неформальное описание разработанного ИЯ (назначение, об-

ласть применения, эффективность по сравнению с традиционными ЯП

для реализации конкретных процессов РИСК, примеры программ).

Если у конкретного студента не хватит воображения для разра-

ботки собственного ИЯ, он может использовать логически завершен-

ное подмножество существующего ИЯ (Фортран, Паскаль, ПЛ, языки

работы с БД и другие);

- формальное описание лексики и синтаксиса ИЯ;

- тексты тестовых программ на ИЯ;

- тексты тестовых программ на промежуточном языке - ожидае-

мый разработчиком результат трансляции. Как правило в качестве

промежуточного языка в КП используется язык Си;

- дерево вывода фрагмента тестовой программы;

- семантические программы (блоки, процедуры, функции), ис-

пользуемые для генерации текста на промежуточном языке и запоми-

нания результатов трансляции;

- протоколы результатов выполнения процессов трансляции;

- выводы;

- список литературы. В 1 семестре Вы можете мне не предъяв-

лять только протоколы. Все остальное должно обязательно присут-

ствовать в ПЗ КП.

ОРГАНИЗАЦИЯ ОТЛАДКИ. Все, кто проходит практику в подразде-

лениях предприятия, оснащенных ПЭВМ с операционной системой

МS-DOS, может их использовать для выполнения КП. Для этого пер-

вые 3 человека, согласовавшие со мной ТЗ на КП, должны предоста-

вить дискеты (по 1 шт.), на которые я скопирую инструментальное

ПО - генераторы программ лексического и синтаксического анализа-

торов - LEX и YACC соответственно. Есть и некоторая документация

к ПО.

Проектирование КП может вестись и на СМ-1420, находящихся в

распоряжении кафедры.

ПЗ КП лучше всего набрать на ПЭВМ и распечатать. В этом слу-

чае можно Вам подумать и о распределении отдельных составляющих

КП в зависимости от интересов конкретных студентов.

Те из Вас, кто готов сдать мне КП сейчас, завтра либо через

месяц - будет поощрен повышенной оценкой. При этом такие студен-

ты освобождаются от последующего посещения лекций и практических

занятий.

2 семестр: Отладка разработанного ПО и оформление протоко-

лов работы ЭВМ.

МАТЕМАТИЧЕСКИЙ АППАРАТ - теория формальных языков и грамма-

тик. Подробнее мы ознакомимся с ним на последующих лекциях.

ПРОЦЕСС ТРАНСЛЯЦИИ - выполняемое с сохранением смысла

преобразование входного сообщения с одного языка в выходное сооб-

щение на другом языке.

ТРАНСЛЯТОР - программа, выполняющая процесс трансляции. В

случае выполнения исходной программы без получения текста на вы-

ходном языке, говорят о режиме интерпретации входной программы.

Соответствующая программа, обеспечивающая непосредственную тран-

сляцию входного текста в последовательность команд ЭВМ, называет-

ся интерпретатором.

СТРУКТУРНАЯ СХЕМА ТРАНСЛЯТОРА:

- ЛА (сканер), используемый для разбора лексики исходного

языка (ИЯ). Сканер последовательно просматривает литеры исходной

(транслируемой) программы. Из литер по определенным правилам, за-

данным автоматной грамматикой, сканер строит символы программы

(иначе - лексемы). Состав лексем определяется разработчиком ИЯ и

транслятора с него. Как правило, это числа, идентификаторы, слу-

жебные слова, литералы (цепочки литер, имеющие в программе самос-

тоятельное значение);

- СА, используемый для определения синтаксиса транслируемо-

го текста и управления процессом трансляции. Результат СА - дере-

во вывода;

- семантический анализ, используемый для определения смысла

транслируемого сообщения (либо его фрагмента). Результат семанти-

ческого анализа - хранение информации о транслируемом сообщении в

специальных структурах (таблицах символов, идентификаторах, кон-

стант, и других);

- синтезатор (генератор) текста на промежуточном языке

(польская запись, триады, тетрады, графы, и другие). В Вашем КП в

качестве промежуточного языка я рекомендую использовать язык

программирования Си;

- генератор программы в объектном коде;

- редактирование связей, генерация программы в виде загру-

зочного модуля.

Принципы построения транслятора

Общие сведения

Компилятор должен выполнить анализ исходной программы, а

затем синтез обьектной программы. Исходная программа разлагается

на составные части, затем из них строятся части эквивалентной

обьектной программы. Для этого на этапе анализа компилятор строит

несколько таблиц, которые затем используются как при анализе,так

и при синтезе. Этот процесс представлен на рис.

Процесс преобразования языков программирования включает сле-

дующие этапы:

1) распознавание в исходном тексте программы различных сос-

тавляющих языка;

2) этап синтаксического анализа, на котором распознаются

структуры исходной программы и проверяется их правильность;

3) установление связи между используемыми идентификаторами и

их описанием.

Генерирование обьектного кода

Способ взаимодействия и метод обьединения этих этапов в еди-

ный процесс зависит от числа проходов компилятора.

Все 4-е последовательных процесса: сканирование, анализ,

подготовку к генерации и генерацию команд - можно выполнять пос-

ледовательно или параллельно определенной взаимной синхрониза-

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

ляется обьем доступной памяти. Часто выгодно или даже необходимо

иметь несколько проходов.

В однопроходных трансляторах целая последоватеьлность прос-

тых преобразований (этапов) применяется по очереди к каждой не-

большой части исходной программы таким образом, что рабочая прог-

рамма обращается в процессе единственного просмотра исходной

программы. В многопроходном трансляторе последовательности преоб-

разований применяются ко всей программе как к целому.

Имеется много факторов, определяющих выбор числа проходов

при проектировании трансляторов (время компиляции, время разра-

ботки, относительная независимость фаз трансляции, размеры ОП

ЭВМ).

Некоторые языки (Алгол-68, АДА) принципиально требуют для

своей реализации несколько проходов, в частности можно рассмот-

реть двухпроходную схему трансляции. Ее особенности:

1) она может использоваться для языков программирования, в

которых определяющая реализация идентификатора появляется (тек-

стуально) раньше любой прикладной реализации, что имеет место для

большинства языков;

2) при написании транслятора необходимо пректировать проме-

жуточный язык, на котором должен представляться исходный текст

между программными проходами.

Лексический анализ (сканер)

Сканер - самая простая часть компилятора, иногда также назы-

ваемая лексическим анализатором. Сканер просматривает литеры ис-

ходной программы слева направо и строит символы программы - це-

лые числа, идентификаторы, служебные слова, двухлитерные символы,

такие как ** и // и т.д. Символы передаются затем на обработку

фактическому анализатору. На этой стадии может быть исключен ком-

ментарий. Сканер также может заносить идентификаторы в таблицу

символов и выполнять другую простую работу, которая фактически

требует анализа исходной программы. Он может выполнить большую

часть работы по макрогенерации в тех случаях, когда требуется

только текстовая подготовка.

Синтаксический анализ

Анализаторы выполняют работы по расчленению исходной прог-

раммы на составные части, формированию ее внутреннего представле-

ния и занесению информации в таблицу символов и другие таблицы.

При этом также выполняется полный синтаксический и семантический

контроль программы.

Обычный анализатор представляет собой синтаксически управ-

ляющую программу. В действительности стремяться отделить синтак-

сис от семантики настолько, насколько это возможно. Когда синтак-

сический анализатор узнает конструкцию исходного языка, он вызы-

вает соответствующую семантическую программу, которая контроли-

рует данную конструкцию с точки зрения семантики и затем запоми-

нает информацию о ней в таблице символов или во внутреннем пред-

ставлении программы.

Семантический анализ

Семантическая программа осуществляет семантическую обработ-

ку, когда связанное с ней правило вызывает семантическую редукцию.

Мы предполагаем, что всякий раз, когда в сентенциальной фор-

ме основа x найдена и ее можно привести к нетерминалу U, синтак-

сический распознаватель вызывает программу, связанную с правилом

U ::= x. Генерируемая польская цепочка хранится в одномерном мас-

сиве Р. Целая переменная р содержит индекс, указывающий на пер-

вый свободный элемент массива. Каждый элемент массива может со-

держать один символ (идентификатор или оператор). Предположим

также, что вызванная семантическая программа имеет доступ к сим-

волам основы S(1) ... S(i), находящимся в синтаксическом стеке S,

который используется распознавателем.

Рассмотрим программу, связанную с правилом E1 ::= E2 + T.

Если она вызвана, то мы можем считать, что польская запись для Е2

и Т уже получена. При этом массив Р содержит

...

поскольку Е2 раположено левее Т. Справа от в исходной прог-

рамме находятся только терминалы, т.к. разбор производится слева

направо. Следовательно, все, что требуется от программы, - это

занести знак "+" в польскую цепочку. При этом инфиксная запись Е2

+ Т переводится в суффиксную запись Е2 Т +. Следоватедьно, семан-

тическая программа имеет вид Р(р) := '+'; p := p+1.

Рассмотрим семантическую программу для F ::= I, где I обоз-

начает произвольный идентификатор. В соответствии с правилами

польской записи идентификаторы предшествуют своим операторам; бо-

лее того они встречаются в том же порядке, что и в инфиксной за-

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