Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
90
Добавлен:
02.05.2014
Размер:
1.59 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

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

3.5 Вывод 16

Заключение 17

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

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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