- •УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
- •Блок-схема добавления элемента в таблицу идентификаторов методом хеш-адресации
- •Блок-схема поиска элемента в таблице идентификаторов методом хеш-адресации
- •Блок-схема алгоритма добавления элемента в таблицу идентификаторов на основе метода цепочек
- •Блок-схема алгоритма поиска элемента в таблице идентификаторов на основе метода цепочек
- •Результаты
- •Алгоритм работы лексического анализатора:
- •Результат работы лексического анализатора
- •Проектирование синтаксического анализатора
- •Синтаксический анализатор выполняет две основные задачи:
- ••В курсовом проекте КС-грамматика является грамматикой
- •Результирующее множество крайних левых и крайних правых символов.
- •Матрица операторного предшествования
- •Дерево разбора
- •Выводы
УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра ТК
Курсовая работа
на тему:«Разработка отдельных фаз компиляции для заданного входного языка»
Выполнил: студент гр. УТС-412 Самигуллин А.И.
Консультант:
Карамзина А.Г.
Уфа 2007
Блок-схема добавления элемента в таблицу идентификаторов методом хеш-адресации
Нет
Совпадает элемент в ячейке п с добавляемым элементом А?
Нет
i:=2
пi = (h(A) + pi) mod Nm,
ячейка по адресу ni
пустая ?
Нет
Совпадает эл-нт в ячейке пi с добав. эл- ом А?
Нет
п = пi
Начало
п = h(A)
Да
ячейка по адресу n пустая ?
Добавляем элемент в ячейку по адресу n
Да
Такой элемент уже существует
Да
Добавляем элемент в ячейку по адресу ni
Да
Такой элемент уже существует
Да
Нет |
Таблица заполнена |
i := i + 1
Конец
Блок-схема поиска элемента в таблице идентификаторов методом хеш-адресации
Начало
п = h(A)
|
Нет |
|
Да |
|||
|
|
|
ячейка по |
|
||
|
|
|
адресу n |
|||
|
|
|
пустая |
? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Элемент |
|
|
|
|
|
|
не найден |
Ид(n)=А |
Да |
|
|
|||
|
|
|
|
Нет Элемент найден
i:=1
пi = (h(A) + pi) mod Nm,
Да
ячейка по адресу ni
пустая ?
|
Нет |
|
|
|
|
||
|
|
|
|
|
|
Элемент |
|
Ид(ni)=А |
Да |
|
|
не найден |
|||
|
|
|
|
|
|||
|
Нет |
|
|
|
|
||
|
|
|
|
|
|||
|
|
|
|
|
|||
|
|
|
|
Элемент найден |
|
||
i := i + 1 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Конец
Блок-схема алгоритма добавления элемента в таблицу идентификаторов на основе метода цепочек
Блок-схема алгоритма поиска элемента в таблице идентификаторов на основе метода цепочек
Результаты
Алгоритм работы лексического анализатора:
•просматривается входной поток символов программы на исходном языке до обнаружения очередного символа, ограничивающего лексему;
•для выбранной части входного потока выполняется функция распознавания лексемы;
•при успешном распознавании информация о выделенной лексеме заносится в таблицу лексем, и алгоритм возвращается к первому этану;
•при неуспешном распознавании лексемы, она помещается в поле ошибочных лексем, и делается попытка распознать следующую лексему (идет возврат к первому этану алгоритма).
Результат работы лексического анализатора
Проектирование синтаксического анализатора
G({prog, end., if, then, else, begin, end, for ,to, downto, do, and, or, not, =, <,>, (, ), -, +, a, ;, :=,>>,<<}, {S, L, O, B, C, D, E, T}, P,S))
Р:
S prog L end.
L O | L ; O | L;
O if B then O else O| if B then O| begin L end | for O to T do O| for O downto T do O | a := E
B B or C | C C C and D | D
D E < E | E > E | E = E | not (B) E E – T | E + T| a>>T|a<<T |T F a |(E)
Синтаксический анализатор выполняет две основные задачи:
проверка правильности конструкций программы, которая представляется
в виде уже выделенных слов входного языка, и преобразование её в вид,
удобный для дальнейшей семантической (смысловой) обработки и генерации
кода. Одним из таких способов представления является дерево
синтаксического разбора.
Схема МП-автомата:
|
|
Входная |
|||||||||
|
|
|
цепочка |
…... |
|
…... |
|
|
|
|
|
|
А1 |
А2 |
|
Аn |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Стек |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||
Устройство |
|
|
|
|
|
|
|
Z1 |
|||
|
|
|
|
|
|
|
|||||
управления |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Z2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Z3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
МП-автоматом выполняется алгоритм «сдвиг-свертка» для грамматики операторного предшествования. Для моделирования его работы необходима входная цепочка символов и стек, в котором автомат может обращаться не только к самому верхнему символу, но и к некоторой цепочке символов на вершине стека.