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

Курсовой проект по СПО

«Разработка отдельных фаз компиляции для заданного входного языка»

Выполнила:

студент группы УТС-411 Мухамадеева Г.И.

Уфа 2007

Системное Программное Обеспечение

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

Схема трансляции

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

 

Исходная

Лексический анализ

Схема трансляции:

программа

 

 

 

 

Анализ и локализация

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

 

обнаруженной ошибки

 

 

 

Сообщение об

Семантический анализ

 

ошибке

 

 

Анализ

Внутреннее

представление

программы

Подготовка к генерации кода

Генерация кода

Синтез

Объектная

программа

Системное Программное Обеспечение

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

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

Способы организации ТИ:

Простой список; Упорядоченный список; Простое рехэширование;

Рехэширование с использованием псевдослучайных чисел; Рехэширование с помощью произведения; Бинарное дерево; Метод цепочек;

Системное Программное Обеспечение

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

Для организации таблицы идентификаторов по методу рехэширования необходимо определить все хэш-функции h[i] для всех i. Чаще всего функции h[i] определяют как некоторые модификации хэш-функции h.

h[i](A) = (h(A) + i) mod N,

где N – максимальное значение хэш-функции.

Системное Программное Обеспечение

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

Блок-схема добавления элемента в ТИ методом простого рехэширования:

начало

Вычислить ХФ для нов. эл. А, n=h(A)

да

нет

 

Ячейка по адр. n пустая?

i = 1;

По адр. n размещаем идентификатор А

n[i]=h[i](A)

 

да

нет

Ячейка по адр. n[i] пустая?

 

да

нет

 

n[i]=n

По адр. n[i]

 

размещаем

i++;

идентификатор А

 

Сообщение об

 

ошибке

 

конец

Системное Программное Обеспечение

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

Блок-схема поиска элемента в ТИ, организованной методом простого рехэширования:

Системное Программное Обеспечение

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

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

Системное Программное Обеспечение

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

Блок-схема добавления элемента в ТИ методом цепочек:

Да

По адр. n[i] размещаем значение указателя В ТИ доб. нов. ячейка,

в кот. размещаем идентификатор А; Указ. перемеща ем на след. своб. ячейку

Начало

ХТ - пусты е ячейки; ТИ - пустые ячейки; Указ. - на первую

сво б. ячейку в ТИ; i:=1;

Вычислить ХФ для нов. эл. А, n[i]=hi(A),

Нет

Ячейка по адр. n[i] пустая?

j:= 1;

mj- адрес в ТИ ;

Да

В поле ссылки заносим знач. указателя; доб . нов. яче йку в ТИ

Нет

Поле ссылки mj пусто?

j:= j+1;

mj- адрес в ТИ ;

 

Да

Есть ещё идент. дл я доб.?

Нет

 

 

 

 

 

 

 

 

 

 

 

i:= i+1;

 

 

 

 

 

n[i]:=hi(B);

 

 

Конец

 

 

 

 

 

 

Системное Программное Обеспечение

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

Блок-схема поиска элемента в ТИ, организованной методом цепочек:

 

Начало

 

 

 

 

 

 

Вычислить ХФ для

 

 

 

 

 

 

искомогов. эл . А,

 

 

 

 

 

 

n=h(A),

 

 

 

 

 

Да

Ячейка по адр. n пустая?

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Элемен т не найден.

 

j:= 1;

 

 

 

 

 

 

mj- адрес в ХТ;

 

 

 

Да

Эл. в ячейке mj

= A?

Нет

 

 

 

 

 

Да

 

Нет

 

Да

Поле ссылки пусто?

Нет

Поле ссылки пусто?

 

 

 

 

 

 

 

 

 

 

 

 

Элемен т не найд ен.

j:= j+1;

Элемен т найден .

1

mj- адрес из

 

 

 

 

поля ссы лки;

 

 

 

 

 

 

 

Конец

 

 

 

 

 

Системное Программное Обеспечение

Результаты сравнения

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

коллизий 74;

сравнений 19;

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

коллизий 59;

сравнений 3.

Системное Программное Обеспечение

Соседние файлы в папке Курсовая СПО