|
- 2-й проход макропроцессора
- Начальные установки: открытие файлов, создание пустых таблиц, etc. Признак режима обработки устанавливается в значение "обработка программы".
- Признак конца обработки установлен ?
- Если признак конца обработки установлен, выполняются завершающие операции...
- .. и работа Макропроцессора заканчивается.
- Выполняется разбор строки.
- Проверяется признак режима обработки.
- Если признак режима установлен в значение "обработка макроопределения", то проверяется мнемоника оператора.
- Если в режиме обработки макроопределения встречается мнемоника MEND, то режим переключается в "обработка программы", все прочие операторы в режиме обработки макроопределения игнорируются.
- Если признак режима работы установлен в значение "обработка программы", происходит ветвление алгоритма в зависимости от мнемоники оператора.
- Обработка оператора MACRO заключается в установке режима обработки в значение "обработка программы".
- Обработка директивы Ассемблера END заключается в установке признака окончания работы и выводе оператора в выходной файл.
- Любая другая мнемоника ищется в Таблице машинных команд и в Таблице директив Ассемблера. Если мнемоника найдена в одной из этих таблиц, то...
- ... оператор просто выводится в выходной файл.
- Если оператор не является оператором языка Ассемблера, то предполагается, что это макровызов и соответствующее мнемонике имя ищется в Таблице имен макроопределений.
- Если имя не найдено в Таблице имен макроопределений, то оно ищется в библиотеках макроопределений (см. ниже).
- Если имя не найдено и в библиотеках макроопределений, вырабатывается сообщение об ошибке и управление передается на чтение следующего оператора программы.
- Если имя не найдено в библиотеках макроопределений, соответствующие элементы включаются в Таблицу имен макроопределений и в Таблицу макроопределений.
- Если имя есть в Таблице макроопределений, выполняется обработка макровызова (см. ниже), после чего управление передается на чтение следующего оператора программы.
|