Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВАЯ СПО.DOC
Скачиваний:
8
Добавлен:
22.11.2019
Размер:
181.25 Кб
Скачать

Федеральное Агентство образования РФ

Государственное образовательное учреждение

высшего профессионального образования

Владимирский государственный университет

Кафедра вычислительной техники

Пояснительная записка

к курсовой работе

по дисциплине

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

Разработка компилятора

c языка Pascal на язык Assembler

выполнил:

студент гр. ИВТ-302

Бережной А.М.

Проверил:

Лобачёв Г.А.

Владимир 2004

Содержание:

1. Введение 2. Цели и требования 3. Внешний проект 4. Проект архитектуры 5. Реализация 6. Заключение Список литературы Приложения

1. Введение

В данной курсовой работе необходимо разработать компилятор языка высокого уровня.

Всякий компилятор является составной частью системного программного обеспечения. Основное назначение компиляторов — служить для разработки новых прикладных программ с помощью языков высокого уровня.

Любая программа, как системная, так и прикладная проходит этапы жизненного цикла, начиная от проектирования и вплоть до внедрения и сопровождения. А компиляторы — это средства, служащие для создания программного обеспечения на этапах кодирования, тестирования и отладки.

Однако, сам по себе компилятор не решает полностью всех задач, связанных с разработкой новой программы. Средств только лишь компилятора недостаточно для того, чтобы обеспечить прохождение программой указанных этапов жизненного цикла. Поэтому компиляторы — это программное обеспечение, которое функционирует в тесном взаимодействии с другими техническими средствами.

Работая с любой системой программирования, следует помнить, что основным ее модулем всегда является компилятор. Именно технические характеристики компилятора, прежде всего, влияют на эффективность результирующих программ, порождаемых системой программирования.

2. Цели и требования

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

Исходные данные:

Входной язык — PASCAL

Выходной язык — Assembler

Язык реализации — Visual C++ 6.0

3.Внешний проект

Компиляция происходит с использованием следующей грамматики:

Программа:

тело:

Составной оператор

раздел описаний:

описание метки

метка

описание переменной

метка:

идентификатор:

Составной оператор:

оператор:

оператор присваивания:

оператор if

оператор goto

выражение

Оператор writeln:

Структура генерируемого ассемблерного файла следующая:

.model small

.stack 128

.data

описание переменных

.code

код программы

Список ошибок компиляции:

VAR_NOT_FOUND - не найдено ключевое слово var в начале программы

TOO_LONG_STRING - слишком длинная строка

UNRESOLVED_ID_NAME – неразрешённое имя идентификатора

UNRESOLVED_TYPE – неразрешённый тип

TOO_LONG_IDENTIFIER_NAME – слишком длинное имя идентификатора

NOT_EXPECTED – ожидался символ ‘;’

NOT_EXPECTED2 - ожидался символ ‘:’

NOT_EXPECTED3 - ожидался символ ‘)’

UNKNOWN_SENTENSE – неизвестный оператор

INVALID_COMPARE – неверная функция сравнения

THEN_EXPECTED – ожидалось ключевое слово then

UNDECLARED_ID – необъявленный идентификатор

основные модули:

compiler.cpp — модуль с основной программой; содержит все функции необходимые для компиляции

compiler.h – содержит объявления функций и констант

error.h — функция обработки ошибок.

IdTableElement.h — класс элемента таблицы идентификаторов.

list.h — обобщённый класс связного списка.