- •УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
- •Синтаксический анализатор выполняет две основные задачи:
- •Блок-схема добавления элемента в таблицу идентификаторов методом хеш-адресации
- •Блок-схема поиска элемента в таблице идентификаторов методом хеш-адресации
- •Блок-схема алгоритма добавления элемента в таблицу идентификаторов на основе метода цепочек
- •Блок-схема алгоритма поиска элемента в таблице идентификаторов на основе метода цепочек
- •Результаты
- •Алгоритм работы лексического анализатора:
- •Результат работы лексического анализатора
- •Проектирование синтаксического анализатора
- ••В курсовом проекте КС-грамматика является грамматикой операторного предшествования. Для построения анализатора на основе
- •Результирующее множество крайних левых и крайних правых символов.
- •Матрица операторного предшествования
- •Дерево разбора
- •Выводы
УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра ТК
Курсовая работа
на тему:«Разработка отдельных фаз компиляции для заданного входного языка»
Выполнил: студент Са
Консультант: Карамзина А.Г.
Уфа 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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
МП-автоматом выполняется алгоритм «сдвиг-свертка» для грамматики операторного предшествования. Для моделирования его работы необходима входная цепочка символов и стек, в котором автомат может обращаться не только к самому верхнему символу, но и к некоторой цепочке символов на вершине стека.
