Введение 4
1. Исходные данные для выполнения курсовой работы 5
1.1. Задание по курсовой работе 6
1.2. Описание грамматики входного языка 7
2. Разработка лексического анализатора 9
2.1. Описание выбранного способа организации таблицы идентификаторов с обоснованием сделанного выбора 9
2.2. Разработка конечного автомата 14
2.3. Разработка лексического анализатора 17
2.4. Выбор метода взаимодействия лексического анализатора 18 синтаксическим разборщиком
3. Разработка синтаксического разборщика 19
3.1. Разработка матрицы предшествования 19
3.2. Разработка синтаксического разборщика 22
4. Разработка генератора результирующего кода 23
4.1. Выбор и описание форм внутреннего представления программы, используемых в компиляторе с обоснованием сделанного выбора 23
4.2. Разработка алгоритма порождения результирующего кода 23
4.3. Интеграция разработанных компонент в компилятор 24
4.4. Описание разработанного компилятора 24
Заключение 25
Список используемой литературы 26
Цель курсовой работы – разработка и реализация простейшего компилятора по заданному варианту исходных данных.
Задачи, решаемые в ходе выполнения курсовой работы для достижения указанной цели:
− разработать генератор таблицы идентификаторов;
− разработать лексический анализатор;
− разработать синтаксический разборщик;
− разработать генератор результирующего кода.
Курсовая работа включает введение, четыре раздела, заключение, список используемой литературы.
В первом разделе представлено описание исходных данных в соответствии с вариантом, сформулированы требования к входному языку компилятора, построена грамматика входного языка в форме Бэкуса-Наура.
Второй раздел содержит описание выбранного способа организации таблицы идентификаторов с обоснованием сделанного выбора, граф переходов конечного автомата лексического анализатора, описание и разработку лексического анализатора, выбор метода взаимодействия лексического анализатора с синтаксическим разборщиком.
Третий раздел включает разработку матрицы предшествования, синтаксического разборщика на основе разработанной матрицы простого предшествования с тестовыми примерами.
В четвертом разделе рассмотрены следующие вопросы: выбор и описание форм внутреннего представления программы, описание разработанного алгоритма порождения результирующего кода, интеграция разработанных компонент в компилятор, описание разработанного компилятора.
В заключении сформулированы краткие выводы по каждому разделу, полученные в процессе выполнения работы.
В результате данной работы мы познакомились с устройством и этапами работы компилятора, в ходе чего узнали, как распределяются идентификаторы в таблице идентификаторов и какие существуют методы распределения, узнали как устроен конечный автомат и как с его помощью выявить лексемы для организации таблицы лексем и узнали, что такое матрицы предшествования и способ их построения.
1 Баумгертнер, С. В., Кузьмичев, А. Б. Теоретические основы информатики. Выполнение курсовой работы [Текст] : учебно-методическое пособие для студентов направлений подготовки 01.03.02 Прикладная математика и информатика, 02.03.03 Математическое обеспечение и администрирование информационных систем. – Тольятти: ТГУ, 2018.
2 Белов, В. В. Алгоритмы и структуры данных [Электронный ресурс] : учеб. для вузов по направлению подгот. 09.03.04 "Программ. инженерия" (квалификация - Бакалавр) / В. В. Белов, В. И. Чистякова. - Документ Bookread 2. - М. : Курс [и др.], 2016. - 238 с. - Режим доступа: http://znanium.com/bookread2.php?book=766771.
3 Гагарина, Л. Г. Технология разработки программного обеспечения [Электронный ресурс] : учеб. пособие для вузов по направлениям подгот. 09.04.01 и 09.03.03 "Информатика и вычисл. техника" / Л. Г. Гагарина, Е. В. Кокорева, Б. Д. Сидорова-Виснадул Под ред. Л. Г. Гагариной. - Документ Bookread 2. - М. : Форум [и др.], 2018. - 400 с. : ил. - Режим доступа: http://znanium.com/bookread2.php?book=924760.
4 Гордеев, А. В., Молчанов, А. Ю. Системное программное обеспечение [Текст] : учеб. для вузов / А. В. Гордеев, А. Ю. Молчанов. - М.: Питер, 2017. - 736 c.
5 Молчанов, А. Ю. Системное программное обеспечение Лабораторный Практикум. [Электронный ресурс] : URL: https://docplayer.ru/30301704-Aleksey-yurevich-molchanov-sistemnoe-programmnoe-obespechenie-laboratornyy-praktikum.html.
6 Синицын, С. В. Основы разработки программного обеспечения на примере языка С [Электронный ресурс] / С. В. Синицын, О. И. Хлытчиев - Электрон. текстовые данные. - Москва: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016. - 211 c. - Режим доступа: http://www.iprbookshop.ru/73700.html.
7 Richard L. Hulterman. Fundamentals of C++ Programming : School of Computing Southern Adventist University, 2018.