Системное программирование. Конспект лекций




Алгоритм выполнения 1-го прохода следующий:


  • 1-й проход Макропроцессора
  • Инициализация: открытие исходного файла, создание пустых таблиц, признак "обработка макроопределения" устанавливается в FALSE.
  • Чтение следующей строки исходного файла с проверкой конца файла.
  • Если при чтении строки найден конец файла, выводится сообщение об ошибке, закрываются файлы, освобождается память...
  • ... и Макропроцессор завершается с признаком ошибки.
  • Если конец файла не достигнут, выполняется лексический разбор прочитанной строки с выделением имени и мнемоники операции.
  • Алгоритм Макропроцессора разветвляется в зависимости от мнемоники операции
  • Если мнемоника операции MACRO - заголовок макроопределения, то в таблицу имен макроопределений заносится имя, находящееся в этом операторе и начальный адрес свободной области в таблице макроопределений. (При занесении имени в таблицу имен макроопределений проверяется, нет ли уже в таблице такого имени, если есть - ошибка)
  • Оператор MACRO записывается в таблицу макроопределений.
  • Признак "обработка макроопределения" устанавливается в TRUE.
  • Если мнемоника операции MEND - конец макроопределения, то оператор записывается в таблицу макроопределений...
  • ... и признак "обработка макроопределения" устанавливается в FALSE.
  • Если мнемоника операции END - конец программы, то проверяется установка признака "обработка макроопределения".
  • Если этот признак установлен в TRUE, т.е., конец программы встретился до окончания макроопределения, то выводится сообщение об ошибке, закрываются файлы, освобождается память...
  • ... и Макропроцессор завершается с признаком ошибки.
  • Если этот признак установлен в FALSE, то выполняются завершающие операции ...
  • ... и заканчивается 1-й проход Макропроцессора.
  • При любой другой мнемонике оператора проверяется установка признака "обработка макроопределения".
  • Если этот признак установлен в TRUE, то оператор записывается в таблицу макроопределений, если признак установлен в FALSE, то оператор игнорируется Макропроцессором.




  • Содержание  Назад  Вперед