Интерактивный макрогенератор Паген

Интерактивный макрогенератор Паген предназначен для интерактивной обработки текста, позволяющей производить редактирование текстов программ по нескольким, заранее намеченным вариантам; является весьма удобным средством для генерирования программ, пакетов, операционных систем и т. д. Основными средствами макрогенератора Паген являются интерактивный ввод управляющих переменных и условная обработка текста в зависимости от значения этих переменных.

Операторы и переменные могут находиться в тексте программы, подготовленной на любом языке, поэтому необходимы специальные средства для их выделения.

Операторы — строкоориентированные, в первой позиции строки стоит знак «<»; метки отсутствуют. Идентификаторы переменных двухлитерные (первая — буква, вторая — цифра); вхождению идентификатора в произвольный текст предшествует знак «¬»; операнды в операторах разделяются знаком «=»; комментарии могут встретиться в любом месте оператора; они вводятся знаками «"».

Все символьные переменные могут иметь длину до 15 литер. Константы того же типа вводятся непосредственно, без ограничителей. Цепочки символов, изображающие числа, интерпретируются соответствующим образом в арифметических операциях. При вводе таких цепочек с терминала возможна проверка корректности записи числа.

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

Открытие нового выходного файла производится оператором RUN (спецификация __ файла). Прежний выходной файл закрывается автоматически, его можно закрыть и явно оператором EOF.

«Явный» обмен информацией производится только с терминалом. Вывод сообщения (символьной константы) производится операторами MES и ASK, а ввод — оператором GET=<имя_перем.> одновременно с присваиванием значения некоторой переменной.

Четыре арифметические операции, подобно языку Макроассемблера, записываются в виде отдельных операторов с присваиванием результата первому операнду. Операции производятся над цепочками символов, которые в зависимости от ключей (/D, /О, /F), следующих за идентификатором операции (ADD, SUB, MUL, и DIV), определяют интерпретацию этих цепочек: как десятичное, целое, восьмеричное целое и десятичное с плавающей точкой. Кроме указанных четырех операций в язык введена знаковая операция SGN, результатом которой является +1 при положительном значении операнда и -1 при отрицательном.

Оператор присваивания здесь имеет два назначения: LET — программное — указывается имя переменной и присваиваемое ей значение и GET — внешнее — переменная приобретает значение, введенное с экрана.

Условная обработка текста — важнейший элемент Пагена. Имеется две возможности управления условной трансляцией. Операторы IEQ и INE производят сравнение символьных переменных, определенных заранее, с заданными значениями, операторы IFZ и IFP анализируют цепочки символов, обозначающих число. Вторая возможность связана с ответом оператора (Y или N); она используется с помощью операторов IFY и IFN. Участок текста, который обрабатывается условно, начинается одним из указанных операторов и заканчивается оператором END. Директива ELS заменяет условие директивы на противоположное. Условные операторы могут быть вложенными.

Окончание обработки (до завершения файла) и передача управления интерпретатору директив организуются оператором HLT. Предварительно оператором ЕХЕ может быть определена директива, которая должна быть выполнена интерпретатором директив сразу после окончания работы; может быть указан также командный файл.

Паген допускает использование макрокоманд. Макроопределение вводится оператором МСR=имя—макро, а заканчивается оператором MEN. Макроопределение может содержать до 10 формальных параметров, обозначаемых ¬n (n=0 ... 9), но фактические параметры и имена ограничены длиной в 15 литер. В теле макроопределения могут быть использованы любые операторы, за исключением INP и СНА. Допускаются вложенные и рекурсивные макрокоманды.