Разработка лексического и синтаксического анализатора
Введение
Компилятор – это программный модуль. Его задачей является перевод программы, написанной на языке программирования (исходный язык) в программу на языке ассемблера или машинных команд. На данный момент существует множество компиляторов на разные языки программирования. Есть как бесплатные среды разработок, так и платные.
Несмотря на то, что в настоящее время уже разработано множество различных языков и компиляторов, процесс создания новых не прекращается.
Существует три вида компиляторов:
однопроходный компилятор;
двухпроходный компилятор;
многопроходный компилятор.
Разнообразие видов, связано с развитием вычислительных машин и необходимостью решения всё более сложных задач.
В данной курсовой работы будет разобран код программы выполняющий синтаксический и лексический разбор входного текста, а также генератор кода.
Техническое задание
Назначение разработки
Программа, разработанная в ходе данного курса, представляет из себя компилятор, реализующий
Содержание
Введение4
Техническое задание5
Назначение разработки5
Требования к программе6
Требования к функциональным характеристикам6
Язык программирования7
Описание логической структуры7
Стадии и этапы разработки компилятора7
Выводы7
2 Разработка лексического анализатора10
2.1.Описание лексического анализатора…………………………………..10
2.2.Конечный автомат. Граф конечного автомата12
2.3.Спецификации таблиц ………………………………………………….. 12
2.4.Выводы15
3 Разработка синтаксического анализатора17
3.1.Синтаксический анализатор. Грамматика17
3.2. Спецификации функций синтаксического анализатора…..………..19
3.3.Обработка ошибок синтаксического анализатора…………………..19
4 Тестирование программы компилятора……………………………….…..22
4.1.Контрольный пример………………………………………………………..22
4.2.Результат работы программы………………………………………………23
Заключение……………………………………………………………………………26
Список используемой литературы…………………………………………………..27
Приложение 1: Листиинг компилятора……………………………………………..28
Список использованной литературы
Молчанов А. Ю. Системное программное обеспечение: Учебник для вузов. – СПб.: Питер, 2003. – 396 с.
Братчиков И.Л. Синтаксис языков программирования / Под ред. С.С. Лаврова. – М.: Наука, 1975. - 262с.
Вильямс А. Системное программирование в Windows 2000 для профессионалов. – СПб.: Питер, 2001. – 624с.
Ахо А., Сети Р., Ульман Д. Компиляторы: принципы, технологии и инструменты.: Пер. с англ. – М.: Изд. дом «Вильямс», 2001. – 768с.
Волкова И.А., Руденко Т.В. Формальные языки и грамматики. Элементы теории трансляции. – М.: Диалог-МГУ, 1999. – 62с.
Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение.
–СПб: Питер, 2001. – 736с.
ГрисД.Конструированиекомпиляторовдляцифровых вычислительных машин: Пер. с англ. – М.: Мир, 1975. – 544с.
Дворянкин А.И. Основы трансляции: Учебное пособие. – Волгоград: ВолгГТУ, 1999. – 80с.
Жаков В.И., Коровинский В.В., Фильчаков В.В. Синтаксический анализ и генерация кода. – СПб.: ГААП, 1993. – 26с.
Python – высокоуровневый язык программирования общего назначения, подходящий для решения разнообразных задач и разработки для многих платформ.
В общем и целом, любой из этих языков подошел бы для разработки программы курсовой работы. Конкретно для этой работы был выбран язык C++, ввиду знания его студентом и простоты написания в сравнении с другими представленными выше языками.
1.5 Описание логической структуры
Создавая компилятор необходимо иметь представление о его устройстве и понять, на какие этапы будет необходимо разделить разработку. Например, необходимо наглядно увидеть и понять составляющие этапов анализа и генерации кода, а также вспомогательных элементов для реализации необходимых этапов. На рисунке 1.1 представлена классическая структура компилятора.
Рисунок 1.1–Логическая структура
1.6 Стадии и этапы разработки компилятора
Процесс разработки включает следующие этапы:
Определ