Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект [Вариант 12-13] / Курсовой_13_new_вар.doc
Скачиваний:
54
Добавлен:
02.05.2014
Размер:
1.55 Mб
Скачать

Содержание

Лист

Содержание 1

Введение 2

1 Организация таблицы идентификаторов 3

1.1 Исходные данные 3

1.2 Назначение таблицы идентификаторов 3

1.3 Метод простого рехэширования 3

1.4 Метод цепочек 5

6

1.6 Вывод 6

2 Проектирование лексического анализатора 7

2.1 Исходные данные 7

2.2 Назначение лексического анализатора 7

2.3 Схема распознавателя 8

2.4 Результат выполнения программы 9

2.5 Вывод 10

3 Построение дерева вывода 11

3.1 Исходные данные 11

3.2 Синтаксический анализатор 12

3.3 Таблицы предшествования 13

Матрица предшествования исходной грамматики 15

3.4 Результат выполнения программы 16

3.5 Вывод 16

Заключение 17

Список литературы 18

Приложение А – Листинги программы 19

Введение

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

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

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

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

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

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

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

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

В качестве среды разработка для реализации программы использован язык программирования C++и система программированияBorland CBuilder 6.

1 Организация таблицы идентификаторов

1.1 Исходные данные

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

Первый метод организации таблицы – простое рехэширование. Второй – метод цепочек.

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

1.2 Назначение таблицы идентификаторов

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

В данной работе мы сравним два метода организации таблицы идентификаторов: метод простого рехэширования и метод цепочек.

Соседние файлы в папке Курсовой проект [Вариант 12-13]