Скачиваний:
21
Добавлен:
02.05.2014
Размер:
372.22 Кб
Скачать

УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра ТК

Курсовая работа

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

Выполнил: студент гр. УТС-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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МП-автоматом выполняется алгоритм «сдвиг-свертка» для грамматики операторного предшествования. Для моделирования его работы необходима входная цепочка символов и стек, в котором автомат может обращаться не только к самому верхнему символу, но и к некоторой цепочке символов на вершине стека.

Соседние файлы в папке ПЗ Берта