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

Содержание

Слайд 2

Блок-схема добавления элемента в таблицу идентификаторов методом хеш-адресации

Блок-схема добавления элемента в таблицу
идентификаторов методом хеш-адресации

Слайд 3

Блок-схема поиска элемента в таблице идентификаторов методом хеш-адресации

Блок-схема поиска элемента в таблице
идентификаторов методом хеш-адресации

Слайд 4

Блок-схема алгоритма добавления элемента в таблицу идентификаторов на основе метода цепочек

Блок-схема алгоритма добавления элемента в таблицу
идентификаторов на основе метода цепочек


Слайд 5

Блок-схема алгоритма поиска элемента в таблице идентификаторов на основе метода цепочек

Блок-схема алгоритма поиска элемента в таблице
идентификаторов на основе метода цепочек


Слайд 6

Результаты

Результаты

Слайд 7

Алгоритм работы лексического анализатора: просматривается входной поток символов программы на исходном

Алгоритм работы лексического анализатора:
просматривается входной поток символов программы на исходном языке

до обнаружения очередного символа, ограничивающего лексему;
для выбранной части входного потока выполняется функция распознавания лексемы;
при успешном распознавании информация о выделенной лексеме заносится в таблицу лексем, и алгоритм возвращается к первому этану;
при неуспешном распознавании лексемы, она помещается в поле ошибочных лексем, и делается попытка распознать следующую лексему (идет возврат к перво­му этану алгоритма).
Слайд 8

Результат работы лексического анализатора

Результат работы лексического анализатора

Слайд 9

Проектирование синтаксического анализатора G({prog, end., if, then, else, begin, end, for

Проектирование синтаксического анализатора
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<F → a |(E)
Слайд 10

Синтаксический анализатор выполняет две основные задачи: проверка правильности конструкций программы, которая

Синтаксический анализатор выполняет две основные задачи:
проверка правильности конструкций программы, которая

представляется
в виде уже выделенных слов входного языка, и преобразование её в вид,
удобный для дальнейшей семантической (смысловой) обработки и генерации
кода. Одним из таких способов представления является дерево
синтаксического разбора.

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

Схема МП-автомата:

Слайд 11

Множество крайних левых и крайних правых символов В курсовом проекте КС-грамматика

Множество крайних левых и крайних правых символов

В курсовом проекте КС-грамматика является

грамматикой операторного предшествования. Для построения анализатора на основе этой грамматики, необходимо построить матрицу операторного предшествования. Для этого на первом шаге нужно получить множество крайних левых и крайних правых символов из правил грамматики G.
Слайд 12

Результирующее множество крайних левых и крайних правых символов.

Результирующее множество крайних левых и крайних правых символов.

Слайд 13

Матрица операторного предшествования

Матрица операторного предшествования

Слайд 14

Дерево разбора

Дерево разбора