Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Поволжский государственный технический университет

Кафедра ИВС

“Компилятор”

РУКОВОДСТВО ПРОГРАММИСТА

к курсовой работе по дисциплине

«Системное программное обеспечение»

Выполнил: ст. гр. ВМ-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)

Завершение работы с программой. Вызывается при нажатии на кнопку «Завершить работу с программой».

ЗАКЛЮЧЕНИЕ

Данное руководство программиста включает в себя необходимую информацию по подключаемым модулям, поясняет их назначение. Это является актуальным, так как современное программирование состоит в основном из использования готовых функций, описанных в подключаемых библиотеках. Также, здесь содержится информация о процедурах и функциях основной программы. Вся остальная необходимая информация содержится в других разделах документации.