Разработка компилятора модельного языка. Отчет. Пояснительная записка гоу огу 230105. 60. 11. 06 O руководитель работы Ишакова Е. Н. " " 2011г. Исполнитель
Скачать 1.59 Mb.
|
Министерство образования и науки Российской Федерации Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «оренбургский государственный университет» Кафедра программного обеспечения вычислительной техники и автоматизированных систем КУРСОВАЯ РАБОТА По теории языков программирования и методов трансляции Разработка компилятора модельного языка Пояснительная записка ГОУ ОГУ 230105.60.11.06 O Руководитель работы _____________Ишакова Е.Н. “____”_____________2011г. Исполнитель студент гр. 08ПОВТ(у) ___________ А.В. Кузнецов « ___ »____________ 2011 Оренбург 2011 Содержание Введение 3 1 Постановка задачи 4 2 Формальная модель задачи 5 2.1 Расширенные Формы Бэкуса – Наура………..........................................10 2.2 Формальные грамматики 11 2.3 Диаграммы Вирта…………………………………………………...........12 3 Спецификация основных процедур и функций………………………......19 3.1 Лексический анализатор 19 3.2 Синтаксический анализатор 24 3.3 Семантический анализатор 28 3.4 Генерации внутреннего представления программы 30 3.5 Интерпретатор программы……………………………………………....33 4 Структурная организация данных 34 4.1 Спецификация входной информации 34 4.2 Спецификация выходной информации 34 5 Разработка алгоритма решения задачи 35 5.1 Укрупненная схема алгоритма программного средства…………….....35 5.2 Детальная схема алгоритма программного средства…………………..36 6 Установка и эксплуатация программного средства 37 7 Работа с программным средством 38 Заключение 40 Список использованных источников 41 Приложение А – Таблицы служебных слов и ограничителей 42 Приложение Б – Примеры программ на модельном языке 43 Приложение В – Цепочка вывода и дерево разбора…………………….....45 Приложение Г – Примеры таблиц идентификаторов и двуместных операций……………………………………………………………………..............47 Приложение Д – ПОЛИЗ и интерпретация программы……………............48 Приложение Е – Контрольный пример…………………………...................53 Приложение Ж –Список ошибок, выводимых программой 54 Приложение З –Текст программы 55 Введение Теория формальных языков, грамматик и автоматов составляет фундамент синтаксических методов. Основы этой теории были заложены Н. Хомским в 40–50-е годы XX столетия в связи с его лингвистическими работами, посвященными изучению естественных языков. Но уже в следующем десятилетии синтаксические методы нашли широкое практическое применение в области разработки и реализации языков программирования. В настоящее время искусственные языки, использующие для описания предметной области текстовое представление, широко применяются не только в программировании, но и в других областях. С их помощью описывается структура всевозможных документов, трехмерных виртуальных миров, графических интерфейсов пользователя и многих других объектов, используемых в моделях и в реальном мире. Для того чтобы эти текстовые описания были корректно составлены, а затем правильно распознаны и интерпретированы, применяются специальные методы их анализа и преобразования. В основе данных методов лежит теория формальных языков, грамматик и автоматов. Теория формальных языков, грамматик и автоматов дала новый стимул развитию математической лингвистики и методам искусственного интеллекта, связанных с естественными и искусственными языками. Кроме того, ее элементы успешно применяются, например, при описании структур данных, файлов, изображений, представленных не в текстовом, а двоичном формате. Эти методы полезны при разработке своих трансляторов даже там, где уже имеются соответствующие аналоги. Несмотря на то, что к настоящему времени разработаны тысячи различных языков и их компиляторов, процесс создания новых приложений в этой области не прекращается. Это связно как с развитием технологии производства вычислительных систем, так и с необходимостью решения все более сложных прикладных задач. Такая разработка может быть обусловлена различными причинами, в частности, функциональными ограничениями, отсутствием локализации, низкой эффективностью существующих компиляторов. Целью курсовой работы являться: закрепление теоретических знаний в области теории формальных языков, грамматик, автоматов и методов трансляции; формирование практических умений и навыков разработки собственного компилятора модельного языка программирования; закрепление практических навыков самостоятельного решения инженерных задач, развитие творческих способностей студентов и умений пользоваться технической, нормативной и справочной литературой. 1 Постановка задачи Разработать компилятор модельного языка, выполнив следующие действия. 1) В соответствии с номером варианта составить формальное описание модельного языка программирования с помощью: а) РБНФ; б) диаграмм Вирта; в) формальных грамматик. 2) Написать пять содержательных примеров программ, раскрывающих особенности конструкций учебного языка программирования, отразив в этих примерах все его функциональные возможности. 3) Составить таблицы лексем и диаграмму состояний с действиями для распознавания и формирования лексем языка. 4) По диаграмме с действиями написать функцию сканирования текста входной программы на модельном языке. 5) Разработать программное средство, реализующее лексический анализ текста программы на входном языке. 6) Реализовать синтаксический анализатор текста программы на модельном языке методом рекурсивного спуска. 7) Построить цепочку вывода и дерево разбора простейшей программы на модельном языке из начального символа грамматики. 8) Дополнить синтаксический анализатор процедурами проверки семантической правильности программы на модельном языке в соответствии с контекстными условиями вашего варианта. 9) Распечатать пример таблиц идентификаторов и двуместных операций. 10) Показать динамику изменения содержимого стека при семантическом анализе программы на примере одного синтаксически правильного выражения. 11) Записать правила вывода грамматики с действиями по переводу в ПОЛИЗ программы на модельном языке. 12) Пополнить разработанное программное средство процедурами, реализующими генерацию внутреннего представления введенной программы в форме ПОЛИЗа. 13) Разработать интерпретатор ПОЛИЗа программы на модельном языке. 14) Составить набор контрольных примеров, демонстрирующих: а) все возможные типы лексических, синтаксических и семантических ошибок в программах на модельном языке; б) перевод в ПОЛИЗ различных конструкций языка; в) представить ход интерпретации синтаксически и семантически правильной программы с помощью таблицы. 2 Формальная модель задачи В основе каждого языка лежит алфавит. Алфавитом V называется конечное множество символов. Цепочкой в алфавите V называется любая конечная последовательность символов этого алфавита. |