Скачиваний:
203
Добавлен:
27.01.2015
Размер:
1.66 Mб
Скачать

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

«оренбургский государственный университет»

Кафедра программного обеспечения вычислительной техники

и автоматизированных систем

Курсовая работа

По теории языков программирования и методов трансляции

Разработка компилятора модельного языка

Пояснительная записка

ГОУ ОГУ 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 столетия в связи с его лингвистическими работами, посвященными изучению естественных языков. Но уже в следующем десятилетии синтаксические методы нашли широкое практическое применение в области разработки и реализации языков программирования.

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

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

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

Целью курсовой работы являться:

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

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

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