- •Содержание
- •1. Организация таблицы идентификаторов
- •1.1. Исходные данные
- •1.2. Назначение таблиц идентификаторов
- •1.3. Метод простого рехэширования
- •1.4. Метод цепочек
- •1.5. Результаты
- •2. Проектирование лексического анализатора
- •2.1. Исходные данные
- •3. Проектирование синтаксического анализатора
- •3.1. Исходные данные
- •3.2. Построение синтаксического анализатора
- •3.3. Результаты
- •Список использованной литературы
- •Приложение а Исходный текст программы
- •Приложение б Граф состояний лексического анализатора
Содержание
Введение......................................................................................................... |
2 |
1. Организация таблицы идентификаторов................................................. |
3 |
1.1. Исходные данные................................................................................. |
3 |
1.2. Назначение таблиц идентификаторов............................................... |
3 |
1.3. Метод простого рехэширования........................................................ |
5 |
1.4. Метод цепочек..................................................................................... |
7 |
1.5. Результаты............................................................................................ |
9 |
2. Проектирование лексического анализатора............................................ |
11 |
2.1. Исходные данные................................................................................. |
11 |
2.2. Принципы работы лексического анализатора.................................. |
12 |
2.3. Схема распознавателя......................................................................... |
13 |
2.4. Результаты............................................................................................ |
14 |
3. Проектирование синтаксического анализатора...................................... |
16 |
3.1. Исходные данные................................................................................. |
16 |
3.2. Построение синтаксического анализатора........................................ |
16 |
3.3. Результаты............................................................................................ |
20 |
Заключение..................................................................................................... |
22 |
Список использованной литературы........................................................... |
23 |
Приложение А Исходный текст программы............................................ |
24 |
Приложение Б Граф состояний лексического анализатора.................... |
34 |
Приложение В Матрица операторного предшествования...................... |
36 |
Введение
Компилятор – программный модуль, задачей которого является перевод программы, написанной на одном из языков программирования (исходный язык) в программу на языке ассемблера или языке машинных команд.
Целью данной курсовой работы является изучение составных частей, основных принципов построения и функционирования компилятора, практическое освоение методов построения составных частей компилятора для заданного входного языка.
Курсовая работа заключается в реализации отдельных фаз компиляции заданного языка.
В первой части работы требуется разработать программный модуль, который получает на входе набор идентификаторов, организует таблицу идентификаторов по заданным методам и позволяет осуществить многократный поиск идентификатора в этой таблице. Программа должна подсчитывать число коллизий и среднее количество сравнений, выполняемых для поиска идентификатора.
Во второй части работы требуется разработать программный модуль, выполняющий лексический анализ входного текста по заданной грамматике и порождающий таблицу лексем с указанием их типов.
В третьей части работы требуется разработать программу, которая на основании таблицы лексем выполняет синтаксический разбор текста по заданной грамматике с построением цепочки вывода и дерева разбора.
В качестве среды разработки для реализации приложения использован язык программирования Delphi 7 и система программирования Borland Delphi 7.