Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
62
Добавлен:
02.05.2014
Размер:
286.72 Кб
Скачать

Содержание

Лист

Введение

2

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

3

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

3

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

3

1.3 Метод цепочек

3

1.4 Метод бинарного дерева

7

1.5 Результаты

9

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

10

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

10

2.2 Принципы работы лексических анализаторов

10

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

11

2.4 Результаты

12

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

13

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

13

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

13

3.3 Результаты

17

Заключение

19

Список использованных источников

20

Приложение А. Граф состояний лексического анализатора

21

Приложение Б. Матрица операторного предшествования

22

Приложение В. Исходный текст программы

23

Введение

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

Для выполнения курсовой работы использована среда программной разработки Microsoft Visual Studio.NET 2003 с дополнительно интегрированной библиотекой классов Trolltech Qt v4.0.1.

1 Таблица идентификаторов

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

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

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

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

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

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

1.3 Метод цепочек

Метод цепочек работает по следующему алгоритму:

Шаг 1. Во все ячейки хеш-таблицы поместить пустое значение, таблица идентификаторов пуста, переменная FreePtr (указатель первой свободной ячейки) указывает на начало таблицы идентификаторов; i:=1.

Шаг 2. Вычислить значение хеш-функции ni для нового элемента Ai. Если ячейка хеш-таблицы по адресу ni пустая, то поместить в нее значение переменной FreePtr и перейти к шагу 5; иначе перейти к шагу 3.

Шаг 3. Положить j:=1, выбрать из хеш-таблицы адрес ячейки таблицы идентификаторов mj и перейти к шагу 4.

Шаг 4. Для ячейки таблицы идентификаторов по адресу mj проверить значение поля ссылки. Если оно пустое, то записать в него адрес из переменной FreePtr и перейти к шагу 5; иначе j:=j+1, выбрать из поля ссылки адрес mj и повторить шаг 4.

Для наглядности на рисунке 1 изображена блок-схема алгоритма.

Шаг 5. Добавить в таблицу идентификаторов новую ячейку, записать в нее информацию для элемента Ai (поле ссылки должно быть пустым), в переменную FreePtr поместить адрес за концом добавленной ячейки. Если больше нет идентификаторов, которые надо разместить в таблице, то выполнение алгоритма закончено, иначе i:=i+1 и перейти к шагу 2.

Поиск элемента в таблице идентификаторов, организованной таким образом, будет выполнятся по следующему алгоритму:

Шаг 1. Вычислить значение хэш-функции n для A. Если ячейка хэш-таблицы по адресу n пустая, то элемент не найден и алгоритм завершен, иначе выбрать из хэш-таблицы адрес ячейки таблицы идентификаторов m.

Шаг 2. Сравнить имя элемента в ячейке таблицы идентификатов по адресу m с именем искомого элемента А. Если они совпадут, то искомый элемент найден, и алгоритм завершон, иначе перейти к шагу 3

Шаг 3. Проверить значение поля ссылки в ячейке таблицы идентификаторов по адресу m. Если оно пустое, то искомый элемент не найден и алгоритм завершенж иначе выбрать из поля ссылки адрес m и перейти к шагу 2. Для наглядности на рисунке 2 изображена блок-схема.

Рисунок 1 – Блок-схема организации таблицы идентификаторов по алгоритму «метод цепочек».

Рисунок 2 – Блок-схема поиска элемента в таблице идентификатора организованной по алгоритму «метод цепочек»

Соседние файлы в папке Курсовой проект3