Разработка макропроцессора

  • 08 апр. 2012 г.
  • 6159 Слова
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
им. А.Н.ТУПОЛЕВА
Кафедра прикладной математики и информатики
им. И.Ю.Кожевникова









Курсовая работа по дисциплине
«Системное и прикладное программное обеспечение».











Выполнил:
Студент гр. 4312
КадриевИ.И.

Проверил:
Доцент
Сотников С.В.
______ ________
(оценка) (подпись)








Казань 2011

Содержание

1. Описание поставленной задачи 3
2. Теоретические сведения 4
2.1. Основные понятия. 4
2.2. Сравнение макросредств и подпрограмм 8
2.3. Некоторыевозможности Макроязыка 9
2.4. Структуры данных Макропроцессора 20
3. Алгоритмы решения задачи 22
3.1. Алгоритм первого прохода 22
3.2. Алгоритм макрогенерации 23
4. Описание процесса использования программного комплекса 25
5. Описание синтаксиса входного кода 28
6. Описание основных функций 32
7. Тестирование программы 34
8. Листинг программы 36
9. Список использованнойлитературы 81

1. Описание поставленной задачи

Необходимо разработать макропроцессор, который удовлетворяет следующим требованиям:
• Опережающее описание макросов: Да
• Количество просмотров: 1
• Вложенные макроопределения: Нет
• Наличие макровызовов внутри макросов: Да
• Параметры вызова макроса: Нет
• Метки внутри макроса: Нет
• Условная макрогенерация.Директивы: IF, ELSEIF, ENDIF, WHILE, ENDW, AIF, AGO
• Работа в составе основного алгоритма Ассемблера: Нет

Требования к программе:
1. Программа должна работать в двух режимах: консольном и GUI
2. Переключение между режимами осуществляется в зависимости от наличия параметров во входной строке программы: если строка не пуста, то работа в консольном режиме, иначе GUI
3. Как минимум три ключа1. Ключи, определяющие входные данные
2. Ключи, определяющие выходные данные
3. Ключ вызова справки








2. Теоретические сведения


2.1. Основные понятия.

Макропроцессор - модуль системного ПО, позволяющий расширить возможности языка Ассемблера за счет предварительной обработки исходного текста программы.
Определение, которое даетГОСТ не представляется удачным, так как оно говорит только о сокращении объема записи, а это лишь одна из возможностей обеспечиваемых Макропроцессором. Хотя Макропроцессоры являются обязательным элементом всех современных языков Ассемблеров, аналогичные модули (Препроцессоры) могут быть и для других языков, в том числе и для языков высокого уровня. Для одних языков (Pascal, PL/1) применение средствпрепроцессора является опционным, для других (C, C++) - обязательным.
Важно понимать, что Макропроцессор осуществляет обработку исходного текста. Он "не вникает" в синтаксис и семантику операторов и переменных языка Ассемблера, не знает (как правило) имен, употребляемых в программе, а выполняет только текстовые подстановки. В свою очередь, Ассемблер обрабатывает исходный текст, не зная, написан тотили иной оператор программистом "своей рукой" или сгенерирован Макропроцессором. По тому, насколько Препроцессор (Макропроцессор) и Транслятор (Ассемблер) "знают" о существовании друг друга, их можно разделить на три категории:
1. Независимые. Препроцессор составляет отдельный программный модуль (независимую программу), выполняющую просмотр (один или несколько) исходного модуля и формирующуюновый файл исходного модуля, поступающий на вход Транслятора (пример - язык C).
2. Слабосвязанные. Препроцессор составляет с Транслятором одну программу, но разные секции этой программы. Если в предыдущем случае Препроцессор обрабатывает весь файл, а затем передает его Транслятору, то в этом случае единицей обработки является каждый оператор исходного текста: он...
tracking img