Макрогенератор общего назначения Магеон

Макрогенератор общего назначения (Магеон). Предназначен для обработки текстовой информации и является полным препроцессором для любого входного языка. Программа макрогенератора написана на языке Фортран и может использоваться в ФОДОС и МДОС. Основное применение макрогенератора — произвольное структурирование программ, что позволяет создавать самодокументированные программы при разработке их сверху вниз. Кроме того, (макрогенератор может быть использован для разработки инструментальных языков, создания и обработки пользовательских макрокоманд для специальных применений и т. д. Макрогенератор обеспечивает динамизм в использовании элементов макроязыка:

  • динамическое переопределение макрокоманд;
  • вложение макровызовов в параметрах и имени макрокоманды;
  • переназначение в диалоге входных пользовательских файлов библиотек макроопределений;
  • изменение (в процессе генерации) разделителей и специальных знаков.

Особенности синтаксиса следующие: идентификаторы макрокоманд — буквенно-цифровые, любой длины, могут включать пробелы; предложения — только макровызовы, они не являются строкоориентированными; комментарии — любой текст вне макровызова считается комментарием и не обрабатывается, могут занимать место не используемого фактического параметра; ключевые слова — имена системных макрокоманд, имя DEF является зарезервированным, остальные закреплены; метки отсутствуют.

Макрогенератор предоставляет возможность обеспечивать вложенные обозначения участков программ. Конечная структура программы, которая будет затем транслироваться и выполняться, не имеет для его работы значения: в первоначальном тексте производится замена любых участков между ограничителями (т. е. макровызовов) их эквивалентом (т. е. макрорасширением), внутри этого макрорасширения могут быть также макровызовы и т. д. Уровень вложенности принципиально не ограничен, связан только с объемом реально доступной физической памяти.

Основной тип данных — строка, но введенная особым образом, так что символы ВК — ПС (возврат каретки — перевод строки) могут находиться внутри ее. Кроме этого, некоторые системные макрокоманды позволяют реализовать арифметические операции над целыми двоичными и десятичными числами. Специальных деклараций типов нет, тип определяется используемой макрокомандой.

Любые операции ввода-вывода, описанные в обрабатываемом тексте, являются допустимыми. Собственных средств ввода-вывода макрогенератор не имеет. Ввод исходных и вывод результирующих файлов производится на любые допустимые в соответствующей операционной среде устройства.

Возможность параллельного выполнения программ, если она заложена в обрабатываемом тексте, сохраняется. Обработка текста ведется последовательно, в порядке задания перечня входных файлов.

Работа макрогенератора производится под управлением ФОДОС и МДОС, входные и выходные файлы могут располагаться на магнитных лентах, дисках, перфоленте.

Основная операция, выполняемая макрогенератором, — вложенная замена строк. После замены строк макровызова макроопределением (которое представляет собой также строку — по сути произвольный участок текста) внутри этого текста производится замена формальных параметров фактическими. Формальные параметры — только позиционного типа, обозначаются в тексте номером позиции.

Основной оператор — оператор присваивания — вводит макроопределения, имеет вид системной макрокоманды DEF. Ввод макроопределения является также макровызовом.