Курсовая работа по дисциплине Теория автоматов и языков программирования на тему "Компилятор для подмножества языка Modula-2". В работе реализован компилятор, состоящий из лексического анализатора, синтаксического анализатора, абстрактного синтаксического дерева. Работа была защищена на "отлично".
Работа сделана в среде разработки Lazarus на языке ObjectPascla/Delhi. Лексический анализатор реализован с помощью генератора лексических анализаторов LEX. Синтаксический разбор осуществляется методом таблично управляемого разбора сверху вниз. Абстрактное синтаксическое дерево строится на основе конструкций, используемых в коде написанной на Modula-2 программы.
Работа программы заключается в том, что пользователь вводит код на языке Modula-2 в соответствующее текстовое поле. Программа производит лексический разбор. Если он успешен, то выполняется синтаксический разбор. Если и он успешен, то выполняется построение узлов абстрактного синтаксического дерева. Узлы дерева выводятся в текстовое поле построчно, узел за узлом. Если в ходе выполнения какого-либо разбора возникает ошибка, программа сообщает об этом.
В демо-файле прикпреплен exe-шник, в основном архиве - вся программа, пояснительная записка к работе, в отдельных файлах для удобства содержатся грамматика языка и таблицы разбора.
Введение 4
1. Описание языка 5
1.1 Описание заданного подмножества языка 5
1.2 Грамматика для заданного подмножества 8
2. Лексический анализатор 12
2.1 Получение модуля лексического анализатора с помощью Lex 12
2.2 Использование модуля лексического анализатора в программе 16
3. Синтаксический анализатор 20
3.1 Построение множества First 20
3.2 Построение множества Follow 24
3.3 Построение таблицы разбора 29
4. Абстрактный синтаксис 40
Заключение 44
Библиографический список 45