Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Поволжский государственный технический университет
Кафедра ИВС
“Компилятор”
РУКОВОДСТВО ПРОГРАММИСТА
к курсовой работе по дисциплине
«Системное программное обеспечение»
Выполнил: ст. гр. ВМ-41
Проверил:
Йошкар-Ола
2013
Аннотация
![]() |
В данном руководстве программиста содержится информация о программной реализации компилятора, разработанного в данной курсовой работе. Подробно описаны условия применения программы. Подробно описано назначение модулей (за исключением стандартных библиотек), подключаемых к программе.
Содержание
Аннотация 2
Содержание 3
Информация о программе 4
Подключаемые модули 5
Состав основной программы 7
Заключение 9
Информация о программе
Функции выполняемые программой
Для выполнения поставленного назначения, программа должна выполнять лексический, синтаксический, семантический анализ, оптимизацию, и генерацию кода на языке низкого уровня ассемблер.
Условия необходимые для выполнения программы
-Наличие свободной оперативной памяти 32-64мб (не считая используемую ОС)
-Оперативная система Windows(98/2000/XP/7/8)
-Процессор (фактически любой оптимальный для ОС, программа не является требовательной к ресурсам процессора)
-10мб свободного места на HDD
-Устройство вывода (монитор)
-Устройство ввода (клавиатура, мышь)
Файлы для работы
Andreev.exe – исполняемый файл программы.
Curs1.txt – пример кода программы на языке Pascal, для иллюстрации работы компилятора.
Curs2.txt – пример кода программы на языке Pascal, который более наглядно изображает оптимизацию промежуточного кода.
Программа разработана в системе программирования Borland Delphi.
![]() |
ПОДКЛЮЧАЕМЫЕ Модули
![]() |
· LexElem. pas
Модуль, описывающий структуру элементов таблицы лексем.
§ TblElem.pas
Модуль, описывающий структуру данных элементов таблицы идентификаторов.
§ LexType.pas
Модуль, содержащий описание всех типов лексем.
· SyntSymb. pas
Модуль, обеспечивающий выполнение функций синтаксического разбора с помощью алгоритма "сдвиг-свертка" на основе матрицы операторного предшествования.
§ LexElem. pas
§ SyntRule.pas
Модуль, содержащий описание матрицы предшествования и правил грамматики.
· Triads. pas
Модуль, обеспечивающий работу с триадами и списком триад.
§ TblElem.pas
§ LexElem.pas
§ TrdType.pas
Модуль для описания допустимых типов триад.
· FncTree. pas
Модуль, обеспечивающий работу с комбинированной таблицей идентификаторов, построенной на основе хэш-функции и бинарного дерева.
§ TblElem.pas
· LexType. pas
· LexAuto. pas
Модуль, обеспечивающий построение таблицы лексем по исходному тексту программы.
§ TblElem. pas
§ LexType.pas
§ LexElem.pas
·
TrdOpt.pas
Модуль реализующий алгоритм оптимизации за счёт исключения лишних операций.
§ TblElem. pas
§ LexElem.pas
§ TrdType.pas
§ Triads.pas
· TrdType.pas
· TrdMake.pas
Модуль, обеспечивающий создание списка триад на основе структуры синтаксического разбора.
§ LexElem.pas
§ Triads.pas
§ SyntSymb.pas
· TrdAsm.pas
Модуль распределения регистров и построения ассемблерного кода по списку триад.
§ TrdType. pas
§ Triads.pas
Маркированный список 1 уровня – модули, подключаемые в основную программу, представленную в листинге. Маркированный список 2 уровня – модули, необходимые для работы очередного модуля из списка 1 уровня, и подключаемые к нему.
Состав основной программы
Весь текст программы вставлять в данный раздел смысла нет, для этого существует листинг. Ниже будут рассмотрены процедуры и функции входящие в состав программы.
· procedure StartInfo (const sErrF: string)
Процедура записи стартовых данных в файл ошибок. Параметр: имя файла ошибок. Вызывается процедурой ProcessParams.
· procedure ProcessParams (var flOptC, flOptSame, flOptAsm: Boolean)
Обработка командной строки. Параметры: flOptC, flOptSame, flOptAsm - флаги. Вызывается процедурой TCursovForm. FormCreate.
· procedure InitLexGrid
Процедура инициализации таблицы для отображения списка лексем. Вызывается процедурой TCursovForm. BtnLoadClick.
· procedure MakeTree (nodeTree: TTreeNode; symbSynt: TSymbol)
Отображение синтаксического дерева. Параметры: nodeTree – ссылка на корневой элемент отображаемой части дерева на экране, symbSynt – ссылка на синтаксический символ, связанный с корневым элементом части дерева. Вызывается процедурами TCursovForm. BtnLoadClick и MakeTree.
· procedure ErrInfo (const sErrF, sErr: string; iPos, iLen: integer)
Информация об ошибке. Параметры: sErrF – имя файла ошибок, sErr – текст ошибки, iPos – позиция ошибки на экране, iLen – количество символов, которые необходимо подсветить. Вызывается процедурами StartInfo, ProcessParams и функцией CompRun.
· function CompRun (const sInF, sOutF, sErrF: string; var symbRes: TSymbol; flTrd, flDelC, flDelSame, flOptC, flOptSame, flOptAsm: Boolean): TErrType
Запуск компилятора. Параметры: sInf – имя входного файла, sOutF – имя результирующего файла, sErrF – имя файла ошибок, symbRes – корень дерева разбора, flTrd – флаг записи триад в списки, flDelC – флаг удаления триад типа “”, flDelSame – флаг удаления триад типа “”, flOptC – флаг оптимизации методом свертки, flOptSmae – флаг оптимизации методом исключения лишних операций, flOptAsm – флаг оптимизации ассемблерного кода.
Функция возвращает типы возможных ошибок компилятора: файловая, лексическая, синтаксическая, семантическая (триады) или ошибок нет. Вызывается процедурами TCursovForm. FormCreate и TCursovForm. BtnLoadClick.
· procedure TCursovForm. FormCreate (Sender: TObject)
В начале выполнения инициализируем список лексем, таблицу идентификаторов, синтаксический стек и список триад. Вызывается при открытии окна программы.
· procedure TCursovForm. FormClose (Sender: TObject; var Action: TCloseAction)
В конце выполнения очищаем список лексем, таблицу идентификаторов, синтаксический стек и список триад. Вызывается при закрытии окна программы.
· procedure TCursovForm. EditFileChange (Sender: TObject)
Чтение из файла, если он не пуст. Вызывается при вводе текста в строку выбора файла.
· procedure TCursovForm. BtnFileClick (Sender: TObject)
Выбор имени файла с помощью стандартного диалога. Вызывается при нажатии на кнопку «Выбрать файл».
· procedure TCursovForm. BtnLoadClick (Sender: TObject)
Чтение и анализ файла. Вызывается при нажатии на кнопку «Загрузить файл».
· procedure TCursovForm. BtnExitClick (Sender: TObject)
Завершение работы с программой. Вызывается при нажатии на кнопку «Завершить работу с программой».
ЗАКЛЮЧЕНИЕ
Данное руководство программиста включает в себя необходимую информацию по подключаемым модулям, поясняет их назначение. Это является актуальным, так как современное программирование состоит в основном из использования готовых функций, описанных в подключаемых библиотеках. Также, здесь содержится информация о процедурах и функциях основной программы. Вся остальная необходимая информация содержится в других разделах документации.





