 
        
        - •Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования
- •Блок-схема добавления элемента в таблицу идентификаторов методом хеш-адресации
- •Блок-схема алгоритма поиска элемента в таблице идентификаторов методом хеш-адресации
- •Блок-схема алгоритма добавления элемента в упорядоченный список
- •Блок-схема алгоритма поиска элемента в упорядоченном списке
- •Результаты работы организации таблиц идентификаторов обоими методами
- ••Лексический анализатор – это часть компилятора, которая читает литеры программы на исходном языке
- •Результат работы лексического анализатора
- •Фрагмент графа переходов КА для оператора сравнения “or”, целых чисел и шестнадцатеричной константы
- •Ошибка при не закрытом комментарии!!!
- •Входной язык задан с помощью следующей КС-грамматики:
- •Класс КС-языков допускает распознавание с помощью недетерминированного
- ••В курсовом проекте КС-грамматика является грамматикой операторного предшествования. Для построения анализатора на основе
- •Множество крайних левых и крайних правых терминальных символов.
- •Матрица операторного предшествования
- •Результаты работы синтаксического анализатора
- •Выводы
 
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования
«УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра ТК
Курсовая работа
по дисциплине «Системное программное обеспечение» на тему:«Разработка отдельных фаз компиляции для заданного входного языка»
Выполнил: ст. гр. УТС-412 Ковалев Е. Н.
Консультант Карамзина А.Г.
Уфа 2007
 
Блок-схема добавления элемента в таблицу идентификаторов методом хеш-адресации
Нет
Совпадает элемент в ячейке
п с добавляемым элементом
А?
Нет
i:=2
пi = (h(A) * pi) mod Nm,
ячейка по адресу ni пустая ?
 Нет
Нет
Совпадает эл-нт в ячейке пi с добав. эл-ом А? 
 Нет
 Нет
п= пi
 Нет i := i + 1
 Нет i := i + 1
Начало
п = h(A)
ячейка по адресу n пустая ?
Да
Да
Да
Добавляем элемент в ячейку по адресу n
Такой элемент уже существует
Добавляем элемент в ячейку по адресу ni
Да
Такой элемент уже существует
Да
Таблица заполнена
Конец
 
Блок-схема алгоритма поиска элемента в таблице идентификаторов методом хеш-адресации
Нет
Ид(n)=А
Нет
i:=1
пi = (h(A) + pi) mod Nm,
ячейка по адресу ni пустая ?
Нет
Ид(ni)=А
Нет
i := i + 1
| 
 | Начало | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | п = h(A) | 
 | 
 | 
 | |
| 
 | ячейка по адресу | 
 | Да | ||
| 
 | 
 | 
 | 
 | ||
| 
 | n пустая ? | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | Элемент | |
| Да | 
 | 
 | не найден | ||
| 
 | 
 | 
 | 
 | ||
| Элемент найден | 
 | 
 | 
 | ||
| 
 | 
 | 
 | 
 | 
 | 
 | 
Да
| Да | Элемент | |
| не найден | ||
| 
 | ||
| Элемент найден | 
 | 
Конец
 
Блок-схема алгоритма добавления элемента в упорядоченный список
| 
 | Начало | 
 | 
| 
 | i=1 | 
 | 
| 
 | Поместить элемент в ячейку с | 
 | 
| 
 | адресом i | 
 | 
| 
 | j=1, i ,1 | 
 | 
| 
 | Ид(j)> Ид(j+1) | Нет | 
| 
 | 
 | |
| i=i+1 | Да | 
 | 
| 
 | 
 | |
| 
 | buf=Ид(j) | 
 | 
| 
 | Ид(j)=Ид(j+1) | 
 | 
| 
 | Ид(j+1)=buf | 
 | 
| Да | Есть | 
 | 
| 
 | 
 | |
| 
 | идентификатор? | 
 | 
| 
 | Нет | 
 | 
| 
 | Конец | 
 | 
 
Блок-схема алгоритма поиска элемента в упорядоченном списке
Начало
min(начало блока элементов)=1; max(конец блока элементов)=N;
ИИд=Ид((max-min)/2+1)
Элемент найден
| 
 | Да | 
 | ИИд < Ид((max-min)/2+1) | 
 | Нет | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| max=( max-min)/2-1 | 
 | 
 | min=( max-min)/2+1 | ||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
max > min
Элемент не найден
Конец
 
Результаты работы организации таблиц идентификаторов обоими методами
 
•Лексический анализатор – это часть компилятора, которая читает литеры программы на исходном языке и строит из них слова (лексемы) исходного языка.
•Лексема (лексическая единица языка) – это структурная единица языка, которая состоит из элементарных символов языка и не содержит в своем составе других структурных
единиц языка.
Результатом работы лексического анализатора является перечень всех найденных в тексте исходной программы лексем. Этот перечень представляется в виде таблицы, называемой таблицей лексем
 
Результат работы лексического анализатора
 
Фрагмент графа переходов КА для пробела, разделяющего знака, комментариев, операторов сравнения “<”, “>” и “=”
| 
 | 
 | 
 | 
| > | H | ; | 
| 
 | ||
| 
 | < | { | 
| 
 | 
 | |
| 
 | 
 | = | 
| 
 | 
 | 
 | 
 | 
 | X4 | 
| B1 | 
 | B2 | B3 | KO | T | 
| X2 | 
 | X2 | X2 | } | X2 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
S 














 E
 E
 
Фрагмент графа переходов КА для оператора сравнения “or”, целых чисел и шестнадцатеричной константы
| o | H | 0 | 
X27
| 
 | 
 | 
 | 
 | С | 
| X11 | OR | X7 | X26 | X3 | 
| 
 | 
 | 
 | 
 | |
| 
 | r | X6 | 
 | |
| 
 | 
 | 
 | 
SH X31
X25
| I | X23 | OR1 | X7 | SH1 | 
 | 
| 
 | 
 | ||||
| 
 | 
 | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | |
| 
 | 
 | 
 | X24 | 
 | X5 | 
| 
 | 
 | 
 | 
 | 
 | 
X22
D h
S 



















 E
 E
