Cтраница 1
Обработка макроопределения всегда завершается генерацией одной из команд. Во всех случаях замены неверных значений параметров выдаются диагностические сообщения с помощью MNOTE. В табл. 5.9 приведены все диагностические сообщения и их номера, под которыми они фигурируют в блок-схеме. [1]
![]() |
Схема макрогенератора. [2] |
Блок обработки макроопределений дважды просматривает каждое макроопределение, описанное в программе, и формирует временные таблицы макрогенератора. [3]
![]() |
Временные таблицы макрогенератора. [4] |
В ходе трансляции блок обработки макроопределений создает пять временных таблиц: таблицу позиционных параметров, таблицу внутренних имен, таблицу ключевых параметров, таблицу описаний макрокоманд и таблицу макрокоманд. [5]
Две первые таблицы нужны только в процессе обработки макроопределения. В трех последних таблицах фиксируется результат работы блока обработки макроопределений. Эти таблицы используются затем блоком обработки макрокоманд. [6]
На рис. 4.1 и 4.2 представлены блок-схемы алгоритма обработки макроопределений и алгоритма расширения. Каждый из алгоритмов выполняет последовательный просмотр входного текста предложение за предложением. Блоки чтение означают выборку следующей входной строки из внешней памяти в рабочую область. [7]
![]() |
Блок управления трансляцией макрогенератора. [8] |
Блок обработки макрокоманд использует таблицы, созданные блоком обработки макроопределений, и формирует еще одну временную таблицу - таблицу позиционных операндов, аналогичную таблице позиционных параметров. [9]
Операторы, которые включаются в программу в результате обработки макроопределения по макрокоманде, называются макрорасширением. [10]
![]() |
Схема макрогенератора. [11] |
Блок обработки макрокоманд, используя таблицы, подготовленные блоком обработки макроопределений, заменяет каждое вхождение макрокоманды соответствующим текстом на языке ассемблера. [12]
В противном случае при первом появлении библиотечной макрокоманды нужно обработать ее макроопределение блоком обработки макроопределений с занесением имени библиотечной макрокоманды в таблицу макрокоманд и формированием остальных таблиц. [13]
Если правее номера печатается знак плюс (), то оператор появился в результате обработки макроопределения. При задании режима PRINT NOGEN операторы макрорасширений не печатаются, но нумерация в таком случае содержит пропуски. [14]
В макроязыке ассемблера имеется две команды MEXIT и MNOTE, которые предоставляют в распоряжение программиста дополнительные средства обработки макроопределений. Команда MNOTE позволяет записать сообщения, которые программист хочет включить в макроопределение. Характер сообщений может быть разным, но в основном, это сообщения о возможных ошибках, которые могут встретиться при компиляции. [15]