Самоучители для программиста

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



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

  1. 1-й проход Макропроцессора
  2. Инициализация: открытие исходного файла, создание пустых таблиц, признак "обработка макроопределения" устанавливается в FALSE.
  3. Чтение следующей строки исходного файла с проверкой конца файла.
  4. Если при чтении строки найден конец файла, выводится сообщение об ошибке, закрываются файлы, освобождается память...
  5. ... и Макропроцессор завершается с признаком ошибки.
  6. Если конец файла не достигнут, выполняется лексический разбор прочитанной строки с выделением имени и мнемоники операции.
  7. Алгоритм Макропроцессора разветвляется в зависимости от мнемоники операции
  8. Если мнемоника операции MACRO - заголовок макроопределения, то в таблицу имен макроопределений заносится имя, находящееся в этом операторе и начальный адрес свободной области в таблице макроопределений. (При занесении имени в таблицу имен макроопределений проверяется, нет ли уже в таблице такого имени, если есть - ошибка)
  9. Оператор MACRO записывается в таблицу макроопределений.
  10. Признак "обработка макроопределения" устанавливается в TRUE.
  11. Если мнемоника операции MEND - конец макроопределения, то оператор записывается в таблицу макроопределений...
  12. ... и признак "обработка макроопределения" устанавливается в FALSE.
  13. Если мнемоника операции END - конец программы, то проверяется установка признака "обработка макроопределения".
  14. Если этот признак установлен в TRUE, т.е., конец программы встретился до окончания макроопределения, то выводится сообщение об ошибке, закрываются файлы, освобождается память...
  15. ... и Макропроцессор завершается с признаком ошибки.
  16. Если этот признак установлен в FALSE, то выполняются завершающие операции ...
  17. ... и заканчивается 1-й проход Макропроцессора.
  18. При любой другой мнемонике оператора проверяется установка признака "обработка макроопределения".
  19. Если этот признак установлен в TRUE, то оператор записывается в таблицу макроопределений, если признак установлен в FALSE, то оператор игнорируется Макропроцессором.









Содержание раздела