2. Описание библиотеки функций Введение В состав системы программирования РЕФАЛ-2 входит набор функций, ко- торые могут быть использованы в РЕФАЛ-программах в качестве внешних. Эти функции именуются первичными и хранятся в библиотеке объектных модулей, входящей в состав РЕФАЛ-системы. Чтобы использовать любую из этих функций в программе, написанной на РЕФАЛе, необходимо объявить ее внешней в соответствующем модуле с по- мощью директивы EXTRN. Часть библиотечных функций написана на РЕФАЛе и затем скомпилирова- на в объектные модули с помощью РЕФАЛ-компилятора. Остальные функции ре- ализованы на языке Си. С точки зрения пользователя РЕФАЛ-системы единственное отличие пер- вичных функций от обычных, написанных на РЕФАЛе, состоит в том, что об- ращения к первичным функциям всегда полностью вычисляются за один шаг РЕФАЛ-машины (независимо от того, насколько длинная и сложная последова- тельность действий при этом выполняется), а также в том, что при выпол- нении этих обращений может возникать побочный эффект, т.е. взаимодейс- твие со средой, внешней по отношению к РЕФАЛ-машине. В частности, с помощью первичных функций реализуются операции ввода-вывода. Кроме того, некоторые первичные функции могут менять состояние РЕФАЛ-машины. 2.1. Функции ввода-вывода Функции ввода-вывода предназначены для организации простейшего диа- логового взаимодействия между пользователем и программой. Такими функци- ями являются: - card (для ввода строк с клавиатуры); - print (для вывода информации на экран дисплея); - prout (для вывода информации на экран дисплея); - printm (для вывода информации на экран дисплея); - proutm (для вывода информации на экран дисплея). Функции print, prout, printm и proutm различаются возвращаемым в поле зрения значением и способом представления информации на экране. Ввод и вывод может быть переназначен в произвольный файл средствами операционной системы. 2.2. Функции арифметики Функции арифметики работают с целыми числами. Целое число - это последовательность макроцифр (т.е. "цифр" в позиционной системе счисле- ния по основанию 224), которой может предшествовать символ знака. Приме- рами целых чисел являются: '+' /14/ /545/ '-' /8/ /1//0/ - значение этого числа равно 2**24=16777216 '-'/3//2035/ - значение этого числа равно -50333683 /0/ Целое число нуль представляется либо нулевой макроцифрой /0/, либо пустым выражением. Все функции арифметики допускают использование пустого выражения в качестве аргумента и воспринимают его как нуль. К функциям арифметики относятся: - add (сложение); - mul (умножение); - sub (вычитание); - dr (деление нацело с остатком); - div (деление нацело); - p1 (прибавление единицы); - m1 (вычитание единицы); - nrel (сравнение целых чисел). Для преобразования целых чисел в символьный вид и обратно использу- ются следующие функции: - symb (целое длиной не более одной макроцифры - в символьный вид); - cvd (целое любой длины - в символьный вид); - numb (последовательность символов - в целое длиной не более одной макроцифры); - cvb (последовательность символов - в целое любой длины). 2.3. Функции лексического анализа Стандартная библиотека РЕФАЛа содержит ряд функций, полезных при выполнении лексического анализа в трансляторах, системах естественноязы- кового общения, языковых конверторах и т.д. Такими функциями являются: - first (предназначена для отщепления от начала выражения части, име- ющей указанную длину); - last (предназначена для отщепления от конца выражения части, имею- щей указанную длину); - lengw (вычисляет длину аргумента, измеренную в термах, т.е. коли- чество термов нулевого уровня, составляющих аргумент); - lengr (вычисляет реальную длину аргумента, т.е. количество символов и скобок, составляющих аргумент); - multe (копирует (размножает) аргумент в заданном количестве экземп- ляров); - type (предназначена для распознавания типа терма, с которого начи- нается выражение). 2.4. Функции для работы с символьными файлами Описываемые в этом разделе функции позволяют работать не более чем с десятью файлами одновременно. При этом пять файлов доступны только на чтение (они именуются "файлами чтения") и пять файлов - только на запись (они именуются "файлами записи"). Работа с файлами производится с помощью следующих первичных функ- ций: - opnget (открыть файл чтения), - opnput (открыть файл записи), - libget (читать файл), - libput (записать в файл), - clsget (закрыть файл чтения), - clsput (закрыть файл записи), - renam (переименовать/переместить файл), - unlnk (удалить файл). Функции opnget и opnput связывают с заданным именем файла опреде- ленный номер (число от 0 до 4). Для выполнения какой-либо операции с файлом с помощью функций libget, libput, clsget и clsput следует указы- вать его номер, помещая соответствующую макроцифру в аргументе (нулевой номер можно не указывыть - он используется по умолчанию). 2.5. Функция порождения процесса Функция apply позволяет писать программы, анализирующие аварийные ситуации типа "отождествление невозможно" или "свободная память исчерпа- на" и предпринимающие некоторые дальнейшие действия по обработке таких ситуаций. Функция apply порождает новое поле зрения, помещает в него функци- ональный терм, определенный в ее аргументе, и пытается вычислить его. Результат такой попытки возвращается в то поле зрения, из которого была вызвана apply. После того, как результат замены сформирован, дополнительное поле зрения, созданное в результате обращения к apply, уничтожается. Можно обращаться к apply рекурсивно. В этом случае образуется стек из полей зрения, однако глубина рекурсии ограничена. Увеличив размер системного стека, можно увеличить глубину вложенности apply. 2.6. Функции для работы с символами-метками В некоторых случаях возникает необходимость превратить цепочку сим- волов в символ-метку или, наоборот, получить из символа-метки цепочку символов, составляющих его тело. Например, из цепочки символов 'ABCDE' построить символ /ABCDE/ или символ-метку /label/ превратить в цепочку 'label'. При этом должно выполняться следующее требование: если мы будем превращать одну и ту же цепочку символов в символ-метку несколько раз, то все созданные символы-метки должны быть равны друг другу, т.е. яв- ляться экземплярами одного и того же символа. Для создания символов-меток и обратного превращения их в цепочки объектных символов используются функции ftochar, chartof и functab: - ftochar (превращает символ-метку в цепочку символов, которая явля- ется телом символа-метки); - chartof (превращает цепочку символов в символ-метку, имеющий тело, совпадающее с заданной цепочкой символов, при этом одна и та же цепочка символов превращается в один и тот же символ-метку, т.е. не создается новый экземпляр символа-метки - это достигается за счет того, что функция создает и поддерживает таблицу символов-ме- ток, порожденных ею из цепочек символов); - functab (регистрирует в таблице символов, создаваемой функцией chartof, указанный символ-метку - это требуется делать, если необ- ходимо, чтобы символ-метка, создаваемый из цепочки символов, заве- домо совпадал с символом-меткой, определенным в РЕФАЛ-программе. 2.7. Функции для работы с копилкой Библиотека функций содержит пять первичных функций для работы с ко- пилкой: - br (закопать), - dg (выкопать), - cp (скопировать), - rp (заменить), - dgall (выкопать все). Подробное описание копилки и операций для работы с ней представлено в 1 разделе. 2.8. Функции для работы со статическими и динамическими ящиками Средством РЕФАЛа, дающим возможность обрабатывать произвольные гра- фы, являются статические и динамические ящики. Библиотека функций содержит шесть первичных функций для работы с ящиками: - new (создать новый ящик), - gtr (извлечь из ящика), - rdr (считать (скопировать) из ящика), - wtr (занести в ящик), - ptr (добавить в ящик), - swr (обменять с содержимым ящика). Подробное описание этих функций представлено в 1 разделе. 2.9. Описание функций Здесь представлены описания функций, расположенных в алфавитном по- рядке. Для каждой функции приводится описание; формат вызова (передавае- мые аргументы); возвращаемое значение и пример вызова функции в формате <вызов функции> --> <результат замены> Функция add. ВЫЗОВ: где E1 и E2 - целые числа (может быть пустые). ОПИСАНИЕ: Функция add предназначена для сложения двух целых чисел E1 и E2. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Результатом вызова функции add является целое число. Если результат положительный, то знак '+' не ставитcя. ПРИМЕРЫ: --> /3/ --> /2/ --> /1//1/ Функция apply. ВЫЗОВ: где E1 - произвольное выражение. ОПИСАНИЕ: Выполнение этого вызова происходит следующим образом: создается но- вое поле зрения, в которое помещается функциональный терм < E1> После этого делается попытка вычислить этот функциональный терм. Возможны три исхода этой попытки: нормальный останов, останов "отождест- вление невозможно" и останов "свободная память исчерпана". Затем форми- руется соответствующий результат замены (возвращаемое значение) и допол- нительное поле зрения, созданное в результате обращения к apply, уничтожается. Можно обращаться к apply рекурсивно. В этом случае образу- ется стек из полей зрения. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: В случае нормального останова результатом замены будет выражение 'N' E2 где E2 - результат вычисления терма < E1>. В случае останова "отождествление невозможно" результатом замены будет выражение 'R' E3 где E3 - содержимое того функционального терма < E4>, попытка вычисления которого привела к останову. В случае останова "свободная память исчер- пана" результатом замены будет выражение 'S' ПРИМЕР: Пусть в поле памяти имеется функция: rev s1 s2 = s2 s1 Тогда --> 'N' 'ba' --> 'R' /rev/'abc' Функция card. ВЫЗОВ: ОПИСАНИЕ: Машинная функция card дает возможность читать записи из стандартно- го входного потока. Обычно в качестве входного потока назначается ввод с клавиатуры, но он может быть переназначен в файл при запуске программы (в этом случае необходимо следить за соответствием количества вызовов функции card и количества записей в файле, если записей меньше, чем вы- зовов, возможны непредсказуемые результаты). ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: После вызова функции card программа переходит в состояние ожидания ввода строки. По окончании ввода (нажатии клавиши "Enter") введенная строка и будет возвращаемым значением. ПРИМЕР: --> 'эта строка введена с клавиатуры' Функция chartof. ВЫЗОВ: где Ec - цепочка символов. ОПИСАНИЕ: Функция chartof превращает цепочку литер в символ-метку, имеющий тело, совпадающее с заданной цепочкой литер. Функция chartof создает и поддерживает таблицу символов-меток, порожденных ею из цепочек литер. Если цепочка литер встретилась в первый раз, то создается пустая функ- ция, имя которой является соответствующим символом-меткой. Если такая же цепочка литер встречается еще раз, то новая функция не создается, а в качестве результата вырабатывается имя ранее созданной функции. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: /символ-метка/ ПРИМЕРЫ: --> /assa3434/ --> /ABCD/ Функция clsget. ВЫЗОВ: где En - номер файла (макроцифра от /0/ до /4/, причем /0/ можно опускать). ОПИСАНИЕ: Функция clsget предназначена для закрытия соответствующего файла чтения после того, как работа с ним закончена. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто ПРИМЕРЫ: --> --> Функция clsput. ВЫЗОВ: где En - номер файла (макроцифра от /0/ до /4/, причем /0/ можно опускать). ОПИСАНИЕ: Функция clsput предназначена для закрытия соответствующего файла записи после того, как работа с ним закончена. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто ПРИМЕРЫ: --> --> Функция cvb. ВЫЗОВ: где Ed - цепочка символов-литер произвольной длины, являющаяся де- сятичной записью целого числа со знаком или без него. Пустое выражение эквивалентно нулю. ОПИСАНИЕ: Преобразует целое число Ed из символьного представления в цепочку макроцифр. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: En - число в виде цепочки макроцифр. ПРИМЕРЫ: --> /0/ --> /25/ --> /59//10144256/ Функция cvd. ВЫЗОВ: где En - целое число в виде цепочки макроцифр (возможно, со зна- ком). ОПИСАНИЕ: Преобразует целое число из цепочки макроцифр в символьное представ- ление. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Ed - цепочка символов-литер, являющаяся записью числа En в десятич- ной системе счисления. Нулевой результат изображается как '0'. ПРИМЕРЫ: --> '-1000000000' --> '0' --> '0' Функция div. ВЫЗОВ:
где E1 и E2 - целые числа. ОПИСАНИЕ: Функция div предназначена для целочисленного деления числа E1 на число E2. Попытка делить на ноль приводит к авосту "отождествление не- возможно". ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Целое число, представляющее собой неокругленное частное от деления E1 на E2. ПРИМЕРЫ:
--> /1/
--> '-'/1/
--> '-'/1/
--> /1/ Функция dr. ВЫЗОВ: где E1 и E2 - целые числа. ОПИСАНИЕ: Функция dr предназначена для целочисленного деления с остатком чис- ла E1 на число E2. Попытка делить на ноль приводит к авосту "отождест- вление невозможно". ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Eq (Er) где Eq (целое число) - частное от деления E1 на E2 , а Er (целое число) - остаток. И частное, и остаток выдаются без незначащих нулей и без знака '+'. Нулевые Eq и Er выдаются в виде макроцифры /0/. Знаки чи- сел учитываются следующим образом: сначала производим деление, не обра- щая внимания на знаки, а затем частному и остатку приписываем такие зна- ки, чтобы выполнялось соотношение: E1 = Eq * E2 + Er т.е. частное положительно, если знаки делимого и делителя совпадают, и отрицательно в противном случае, а не равный нулю остаток всегда имеет знак делимого. ПРИМЕРЫ: --> /1/ (/2/) --> '-'/1/ (/2/) --> '-'/1/ ('-'/2/) --> /1/ ('-'/2/) Функция first. ВЫЗОВ: где Nn - макроцифра, а Ee - произвольное объектное выражение. ОПИСАНИЕ: Эта функция предназначена для отщепления от начала выражения части, имеющей указанную длину. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Если Ee представляет собой последовательность из менее, чем Nn тер- мов, результатом замены является выражение: '*' Ee Если же длина Ee не меньше, чем Nn термов, результатом замены явля- ется (E1) E2 где E1 и E2 - такие выражения, что Ee = E1E2, и при этом E1 является последовательностью ровно из Nn термов. ПРИМЕРЫ: --> ('A'('B')) 'C' --> '*A'('B')'C' Функция ftochar. ВЫЗОВ: где Fx - символ-метка. ОПИСАНИЕ: Эта функция превращает символ-метку в цепочку объектных символов, которая является телом символа-метки. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Результатом замены является цепочка объектных символов, являющаяся телом символа Fx. ПРИМЕРЫ: --> 'assa3434' --> 'ABCD' Функция functab. ВЫЗОВ: где Fx - символ-метка. ОПИСАНИЕ: В некоторых случаях требуется, чтобы символ-метка, создаваемый из некоторой цепочки литер заведомо совпадал с символом-меткой, определен- ным в РЕФАЛ-программе и имеющим тело, полностью совпадающее с данной це- почкой литер. Это достигается с помощью функции functab, которая регист- рирует в таблице символов, создаваемой функцией chartof, указанный символ-метку Fx. После этого, всякий раз, когда функция chartof будет получать цепочку литер, совпадающую с телом символа Fx, результатом функции chartof будет символ Fx. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто ПРИМЕР: Пусть в РЕФАЛ-программе определена некоторая функция func1. Тогда --> и в таблице символов функции chartof окажется зарегистрированным символ- метка /func1/. Функция last. ВЫЗОВ: где Nn - макроцифра, Ee - произвольное выражение. ОПИСАНИЕ: Эта функция предназначена для отщепления от конца выражения Ee час- ти, имеющей указанную длину Nn. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Если Ee представляет собой последовательность из менее, чем Nn тер- мов, результатом замены является Ee '*' Если же длина Ee составляет не менее, чем Nn термов, результатом замены является E1 (E2) где E1 и E2 - такие выражения, что Ee = E1E2 и при этом E2 является пос- ледовательностью ровно из Nn термов. ПРИМЕРЫ: --> 'A'(('B')'C') --> 'A'('B')'C*' Функция lengr. ВЫЗОВ: где Ee - произвольное объектное выражение. ОПИСАНИЕ: Эта функция предназначена для вычисления длины аргумента, т.е. ко- личества символов и скобок, составляющих Ee. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Nn Ee где Nn - макроцифра, значение которой равно длине выражения Ee. ПРИМЕР: --> /6/ 'A' () ('A') Функции lengw. ВЫЗОВ: где Ee - произвольное объектное выражение. ОПИСАНИЕ: Функция lengw выдает длину выражения, измеренную в термах, т.е. ко- личество термов нулевого уровня, составляющих Ee. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Nn Ee где Nn - макроцифра, которая равна длине выражения Ee. ПРИМЕРЫ: --> /3/ 'A' () ('A') --> /0/ Функция libget. ВЫЗОВ: где En - номер файла (макроцифра от /0/ до /4/, причем /0/ можно опускать). ОПИСАНИЕ: Функция libget читает очередную запись из предварительно открытого с помощью функции opnget файла чтения с заданным номером. Попытка чтения из неоткрытого файла приводит к авосту "отождествление невозможно" и вы- даче сообщения "Unknown input file". ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Пусто - если файл прочитан до конца, Er - очередная запись из файла чтения в виде строки объектных символов, если в файле еще остались неп- рочитанные записи. ПРИМЕР: --> 'это очередная прочитанная запись' --> 'это следующая запись из того же файла' Функция libput. ВЫЗОВ: где En - номер файла (макроцифра от /0/ до /4/, причем /0/ можно опускать), а Ee - объектное выражение, которое не содержит составных символов. ОПИСАНИЕ: Функция libput записывает в файл с заданным номером (предварительно открытый с помощью функции opnput) очередную запись Ee. При этом все структурные скобки в выражении Ee преобразуются в символы-литеры '(' и ')'. Ели аргумент Ee пуст, в файл добавляется пустая запись. Попытка за- писи в неоткрытый файл приводит к авосту "отождествление невозможно" и выдаче сообщения "Unknown output file". ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто ПРИМЕР: --> и в конец файла допишется строка 'очередная запись'. Функция mul. ВЫЗОВ: где E1 и E2 - целые числа (может быть пустые). ОПИСАНИЕ: Функция mul умножает целые числа E1 и E2. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: En - целое число (произведение). ПРИМЕРЫ: --> '-'/4/ --> /0/ --> /1//0/ Функция multe. ВЫЗОВ: где Nn - макроцифра, а Ee - произвольное объектное выражение. ОПИСАНИЕ: Эта функция копирует (размножает) выражение в заданном количестве экземпляров. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Ee Ee ... Ee где выражение Ee повторяется Nn раз. В частности, если Nn равно ну- лю, результатом замены является пустое выражение. ПРИМЕРЫ: --> 'AAAAA' --> 'A'('B')'A'('B') --> Функция m1. ВЫЗОВ: где Nn - макроцифра. ОПИСАНИЕ: Функция m1 производит вычитание единицы из макроцифры. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: макроцифра, на единицу меньшая Nn. ПРИМЕРЫ: --> /9/ --> /737/ --> /0/ Функция nrel. ВЫЗОВ: где E1 и E2 - целые числа (может быть пустые). ОПИСАНИЕ: Функция nrel предназначена для сравнения целых чисел с учетом зна- ка. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Sr (E1) E2 где Sr - символ-литера: Sr = '>', если E1 > E2; Sr = '=', если E1 = E2; Sr = '<', если E1 < E2; ПРИМЕРЫ: --> '>' (/5/)/3/ --> '<' ('-'/5/)'-'/3/ --> '=' ()/0//0/ Функция numb. ВЫЗОВ: где Ed - цепочка символов-литер, являющаяся десятичной записью це- лого числа со знаком или без него, или пустое выражение. ОПИСАНИЕ: Преобразует целое число из символьного представления в макроцифру. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Nn - число Ed в виде макроцифры. ПРИМЕРЫ: --> /1000/ --> /0/ --> /25/ Функция opnget. ВЫЗОВ: где En - номер файла (макроцифра от /0/ до /4/, причем /0/ можно опускать), а Ef - объектное выражение, представляющее собой спецификацию файла. ОПИСАНИЕ: Эта функция открывает файл на чтение и связывает с ним заданный но- мер. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто ПРИМЕРЫ: --> --> Функция opnput. ВЫЗОВ: где En - номер файла (макроцифра от /0/ до /4/, причем /0/ можно опускать), а Ef - объектное выражение, представляющее собой спецификацию файла. Ez - это пусто или объектный символ '*', означающий что будет доза- пись в уже существующий файл. Если файл не существует, то файл будет создан, и в него будет осуществляться обычная запись с самого начала. ОПИСАНИЕ: Эта функция открывает файл на запись (или дозапись) и связывает с ним заданный номер. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто ПРИМЕРЫ: --> --> --> Функция print. ВЫЗОВ: где Ee - произвольное объектное выражение. ОПИСАНИЕ: В результате выполнения функции print в стандартный выходной поток (обычно это экран дисплея, но средствами операционной системы можно пе- реназначить его в некоторый файл), начиная с новой строки, выводится вы- ражение Ee. Если выражение не помещается в одной печатной строке, оно продолжается на следующих строках. Печать пустого Ee вызывает пропуск одной печатной строки. При использовании функции print выражение Ee вы- водится следующим образом. Символы-литеры (объектные знаки) выводятся в виде соответствующих литер. Структурные скобки "(" и ")" выводятся в ви- де литер "(" и ")". Составные символы печатаются в том же виде, как они изображаются в РЕФАЛ-программах, за исключением того, что в качестве ог- раничителей используется не "/", а апостроф "'". ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Ee ПРИМЕР: --> 'функция'(/f1/) и на экране (если вывод не переназначен в какой-либо другой файл при за- пуске данной программы) появится: функция('f1') Функция printm. ВЫЗОВ: где Ee - произвольное объектное выражение. ОПИСАНИЕ: При использовании функции printm выражение выводится в том же виде, в котором оно записывается в исходных РЕФАЛ-программах. Единственное различие заключается в том, что при переходе на следующую строку не ста- вится признак продолжения "+". ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Ee ПРИМЕР: --> 'функция'(/f1/) и на экране (если вывод не переназначен в какой-либо другой файл при за- пуске данной программы) появится: 'функция'(/f1/) Функция prout. ВЫЗОВ: где Ee - произвольное объектное выражение. ОПИСАНИЕ: При использовании функции prout выражение Ee выводится точно так же как и функцией print. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто ПРИМЕР: --> и на экране (если вывод не переназначен в какой-либо другой файл при за- пуске данной программы) появится: это('func') Функция proutm. ВЫЗОВ: где Ee - произвольное объектное выражение. ОПИСАНИЕ: При использовании функции proutm выражение Ee выводится точно так же как и функцией printm. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто ПРИМЕР: --> и на экране (если вывод не переназначен в какой-либо другой файл при за- пуске данной программы) появится: 'функция'(/f1/) Функция p1. ВЫЗОВ: где Nn - макроцифра. ОПИСАНИЕ: Функция p1 производит прибавление единицы к макроцифре. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: макроцифра, на единицу большая Nn. ПРИМЕРЫ: --> /11/ --> /739/ Функция renam. ВЫЗОВ: где Ee - объектное выражение, которое не содержит составных симво- лов и представляет собой два имени файлов, разделенных пробелом. ОПИСАНИЕ: Функция renam коптрует файл, заданный первым именем, в файл, задан- ный вторым именем с уничтожением первого файла. Таким образом реализует- мя либо переименование файла (если оба имени отсылают к одной и той же директории), либо перемещение файла из одной директории в другую с сохо- анением того же имени или с присвоением файлу другого имени. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто ПРИМЕРЫ: --> --> --> ЗАМЕЧАНИЕ: напоминаем, что обратный слэш изображается путем двукратного повторения. Функция sub. ВЫЗОВ: где E1 и E2 - целые числа (может быть пустые). ОПИСАНИЕ: Функция sub предназначена для вычитания E2 из E1. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Результатом вызова функции sub является целое число. Если результат положителен - знак '+' не ставитcя. ПРИМЕРЫ: --> '-' /1/ --> /2/ --> /16777215/ Функция symb. ВЫЗОВ: где Nn - целое число в виде макроцифры. ОПИСАНИЕ: Преобразует целое число из макроцифры в символьное представление. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Ed - цепочка символов-литер, являющаяся записью числа Nn в десятич- ной системе счисления. Нулевой результат изображается как '0'. ПРИМЕРЫ: --> '1000' --> '0' --> '0' Функция type. ВЫЗОВ: где Ee - произвольное объектное выражение. ОПИСАНИЕ: Функция type предназначена для распознавания типа терма, с которого начинается выражение. Эта функция не дает никаких новых возможностей по сравнению с теми, которые дает использование спецификаторов. Она включе- на в библиотеку только для того, чтобы обеспечить совместимость с други- ми реализациями РЕФАЛа, и имеет следующее описание: mtype start entry type type S(F)X E1 = 'F' SX E1 S(N)X E1 = 'N' SX E1 S(R)X E1 = 'R' SX E1 S(L)X E1 = 'L' SX E1 S(D)X E1 = 'D' SX E1 S(O)X E1 = 'O' SX E1 (EX) E1 = 'B' (EX) E1 = '*' end ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Sz Ee где Sz - это объектный символ, который равен: - 'F', если Ee начинается с символа-метки; - 'N', если Ee начинается с символа-числа (макроцифры); - 'R', если Ee начинается с символа-ссылки; - 'L', если Ee начинается с буквы (русской или латинской); - 'D', если Ee начинается с цифры; - 'O', если Ee начинается с символа-литеры (объектного знака); - 'B', если Ee начинается с терма вида (E1), где E1 - произвольное объектное выражение; - '*' в остальных случаях. ПРИМЕРЫ: --> 'F' /f1/ 'aaa' --> 'R'/%11111111/ 'a' --> 'L' 'aaa' --> 'D' '9aaa' --> 'O' '-aaa' --> 'B' ('aaa') --> '*' Функция unlnk. ВЫЗОВ: где Ee - объектное выражение, задаюшее имя файла (возможно с указа- нием пути). ОПИСАНИЕ: Указанный файл (если он существует) удаляется. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто. ПРИМЕРЫ: --> --> ЗАМЕЧАНИЕ: напоминаем, что обратный слэш изображается путем двукратного повторения.