- •Курсовой проект по СПО на тему: «Компилятор»
- •Результаты
- •Компилятор – транслятор, осуществляющий перевод исходной программы в эквивалентную ей объектную программу на
- •Таблица идентификаторов – специальным образом организованные наборы данных, служащие для хранения информации об
- •Метод рехэширования с помощью произведения
- •Блок-схема добавления элемента в ТИ по методу
- •Блок-схема алгоритма поиска элемента в ТИ,
- •Метод организации ТИ простым списком
- •Блок-схема добавления элемента в ТИ по методу
- •Блок-схема алгоритма поиска элемента в ТИ,
- •Лексический анализатор
- •Граф конечного детерминированного автомата
- •Пример обработки текстового файла
- •Результаты обработки текстового
- •Синтаксический анализатор
- •Контекстно-свободная грамматика в форме
- •Множества крайних левых и крайних правых
- •Множества крайних левых и крайних правых
- •Остовная грамматика G’, полученная на основе
- •Результаты работы синтаксического
- •Заключение
Курсовой проект по СПО на тему: «Компилятор»
Выполнил: Студент гр. Т28-421 Пестов А. В.
Уфа – 2006
Системное Программное Обеспече ние
Компилятор – транслятор, осуществляющий перевод исходной программы в эквивалентную ей объектную программу на машинном языке
Таблица
идентификаторов
Схема трансляции: |
Исходная |
|
|
Лексический анализ |
|
||||
|
программа |
|
|||||||
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Анализ и локализация |
|
|
|
Синтаксический разбор |
|
|||
|
обнаруженной ошибки |
|
|
|
|
||||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сообщение об |
|
|
|
|||||
|
Семантический анализ |
|
|||||||
|
ошибке |
|
|||||||
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
Анализ
Внутреннее
представление
программы
Подготовка к генерации кода
Генерация кода
Синтез
Объектная
программа
Системное Программное Обеспе чение
Таблица идентификаторов – специальным образом организованные наборы данных, служащие для хранения информации об элементах исходной программы.
Методы организации ТИ:
Простой список;
Упорядоченный список;
Простое рехэширование;
Рехэширование с использованием псевдослучайных чисел;
Рехэширование с помощью произведения;
Бинарное дерево;
Метод цепочек.
Системное Программное Обеспе чение
Метод рехэширования с помощью произведения
Для организации таблицы идентификаторов по методу рехэширования необходимо определить все хэш-функции 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=h(A) |
|
|
|
|
да |
Ячейка по адр. n пустая? |
нет |
|
|
|
|
|
|
|
|
|
|
Имя по адр. n совпадает с А? |
|
|
|
|
Элемент не |
|
|
i = 1; |
|
|
найден |
|
|
|
|
|
Элемент |
|
|
|
|
|
|
|
|
|
|
|
|
найден |
|
|
|
|
|
|
|
n[i]=h[i](A) |
|
|
|
|
да |
|
нет |
|
|
|
Ячейка по адр. n[i] пустая? |
|
|
|
|
|
|
да |
n[i]=n |
нет |
|
|
Элемент не |
|
|
|
|
|
|
|
|
|
|
|
найден |
Элемент не |
|
|
|
|
|
|
Имя по адр. n[i] совпадает с А? |
|
|
|
|
найден |
|
|
|
|
|
|
Элемент |
i++; |
|
|
|
|
найден |
|
|
конец |
|
|
|
|
|
|
Системное Программное Обеспе |
|
||
|
|
чение |
|
|
|
Метод организации ТИ простым списком
При использовании данного метода элементы таблицы располагаются в порядке поступления.
Поиск в этом случае требует сравнения с каждым элементом таблицы, пока не будет найден подходящий. Для таблицы, содержащей N элементов, в среднем будет выполнено N/2 сравнений.
Недостатком метода является то, что если N велико, то способ не является эффективным.
Системное Программное Обеспе чение
Блок-схема добавления элемента в ТИ по методу
простого списка
|
начало |
|
|
n=0; |
|
да |
Ячейка по адр. n пустая? |
нет |
|
|
|
По адр. n |
|
n++; |
|
|
|
размещаем |
|
|
идентификатор А |
|
|
конец
Системное Программное Обеспе чение
Блок-схема алгоритма поиска элемента в ТИ,
организованной с помощью метода простого
списка
|
начало |
|
|
|
|
n=0; |
|
|
|
да |
Ячейка по адр. n пустая? |
нет |
|
|
|
|
|
||
Элемент |
да |
Имя по адр. n совпадает с А? |
нет |
|
не найден |
|
|
||
|
|
|
|
|
|
|
|
|
n++; |
|
Элемент |
|
|
|
|
найден |
|
|
|
конец
Системное Программное Обеспе чение
Результаты
Метод рехэширования с помощью произведения:
–всего сравнений: 8;
–в среднем сравнений: 0,8;
Метод простого списка:
–всего сравнений: 55;
–в среднем сравнений: 5,5.
Системное Программное Обеспе чение
