РефалАБ. Руководство пользователя

2. Описание библиотеки

Введение

В состав языка программирования РефалАБ входит набор функций и спецификаторов, которые могут быть использованы в РефалАБ-программах в качестве внешних. Эти функции и спецификаторы хранятся в библиотеке объектных модулей, входящей в состав РефалАБ-системы.

Чтобы использовать любую из этих функций или спецификаторов в программе, написанной на РефалАБ, необходимо объявить ее внешней в соответствующем модуле с помощью директивы EXTRN.

Часть библиотечных функций, часть библиотечных пустых функций и спецификаторы написаны на РефалАБ. Остальные библиотечные функции, включая пустые, реализованы на языке Си и являются первичными.

2.1. Функции ввода-вывода

Функции ввода-вывода предназначены для организации простейшего диалогового взаимодействия между пользователем и программой. Такими функциями являются:

Функции print, prout, prints, prouts, printm, proutm, write, wrout, writes, wrouts, writem и wroutm различаются возвращаемым в поле зрения значением, способом представления информации на экране и переходом в конце на новую строку.

Ввод и вывод может быть переназначен в произвольный файл средствами операционной системы.

2.2. Функции арифметики

Функции арифметики работают с целыми числами. Целое число - это последовательность макроцифр (т.е. “цифр” в позиционной системе счисления по основанию 2^32), которой может предшествовать символ знака. Примерами целых чисел являются:

'+' 14
545
'-' 8
1 0 - значение этого числа равно 2^32=4294967296
'-' 3 2035 - значение этого числа равно -12884903923
0

Целое число нуль представляется либо нулевой макроцифрой 0, либо пустым выражением.

Все функции арифметики, кроме p1 и m1, допускают использование пустого выражения в качестве аргумента и воспринимают его как нуль. При этом, некоторые функции выдают нулевой результат работы в виде макроцифры 0, а некоторые - в виде пустого выражения, т.к. в некоторых случаях это удобно.

К функциям арифметики относятся:

Для преобразования целых чисел в символьный вид и обратно используются следующие функции:

Отдельно стоящими функциями являются:

Также в библиотеке есть спецификатор Max_Number - максимальное значение макроцифры.

2.3. Функции и спецификаторы лексического анализа

Стандартная библиотека РефалАБ содержит ряд функций, полезных при выполнении лексического анализа в трансляторах, системах естественноязыкового общения, языковых конверторах и т.д. Такими функциями являются:

Отдельно стоящей функцией является step - возвращает количество завершенных шагов процесса.

Также в библиотеке есть спецификатор White_Spaces - множество пробелов.

2.4. Функции для работы с символьными файлами

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

К этим функциям относятся следующие функции:

Функции fopen, Load_File, Save_File, Append_File, Load_FBytes, Save_FBytes, Append_FBytes связывают с заданным именем файла определенный номер (число от 0 до 9). Для выполнения какой-либо операции с файлом с помощью функций fgets, fputs, fprint, fprints, fprintm, fread, fwrite, fseek, ftell, is_feof, is_ferror, fclose следует указывать его номер, помещая соответствующую макроцифру в аргументе.

В библиотеке есть спецификаторы:

Также работа с файлами производится с помощью следующих первичных функций:

2.5. Функция порождения процесса

Функция try позволяет писать программы, анализирующие аварийные ситуации типа “Отождествление невозможно” или “Свободная память исчерпана” и предпринимающие некоторые дальнейшие действия по обработке таких ситуаций.

Функция try порождает новое поле зрения, помещает в него функциональный терм, определенный в ее аргументе, и пытается вычислить его. Результат такой попытки возвращается в то поле зрения, из которого была вызвана try.

После того, как результат замены сформирован, дополнительное поле зрения, созданное в результате обращения к try, уничтожается.

Можно обращаться к try рекурсивно. В этом случае образуется стек из полей зрения, однако глубина рекурсии ограничена. Увеличив размер данного стека, можно увеличить глубину вложенности try.

2.6. Функции для работы с символами-метками

В некоторых случаях возникает необходимость превратить цепочку объектных символов в символ-метку или, наоборот, получить из символа-метки цепочку объектных символов, составляющих его тело. Например, из цепочки символов ‘ABCDE’ построить символ &ABCDE или символ-метку &label превратить в цепочку ‘LABEL’. При этом должно выполняться следующее требование: если мы будем превращать одну и ту же цепочку символов в символ-метку несколько раз, то все созданные символы-метки должны быть равны друг другу, т.е. являться экземплярами одного и того же символа.

Для создания символов-меток и обратного превращения их в цепочки объектных символов используются функции ftochar, chartof и functab:

2.7. Функции для работы с копилкой

Библиотека РефалАБ содержит пять первичных функций для работы с копилкой:

Подробное описание копилки и операций для работы с ней представлено в 1 разделе.

2.8. Функции для работы со статическими и динамическими ящиками

Средством РефалАБ, дающим возможность обрабатывать произвольные графы, являются статические и динамические ящики.

Библиотека РефалАБ содержит шесть первичных функций для работы с ящиками:

Подробное описание этих функций представлено в 1 разделе.

2.9. Функции для работы со временем

Библиотека содержит ряд функций для работы со временем:

2.10. Функция удаления функциональных термов в поле зрения

Функция delf позволяет писать программы, анализирующие поле зрения и удаляющие из него определенные функциональные термы.

Функция delf изменяет поле зрения, удаляя из него функциональные термы, находящиеся в определенной цепочке, являющаяся частью последовательности становления ведущими функциональных термов. Начало цепочки - функциональный терм, который станет ведущим после ведущего функционального терма, т.е. после вызова функции delf. Конец цепочки - функциональный терм, за которым следует сразу символ ‘#’. Также удаляется символ ‘#’.

2.11. Функции высшего порядка

В РефалАБ можно создавать функции высшего порядка, т.е. функции, содержащие в аргументе функции либо в виде символов-меток, либо в виде частично-примененных функций в форме струтктурных термов

(функция выражение)

где функция - символ-метка или частично-примененная функция.

Примерами функций, передаваемых в функции высшего порядка являются:

&add
(&add (2))
(&xopen 'r')
(&xopen 'r' 0)
((&xopen 'r') 0)

Библиотека РефалАБ содержит следующие функции высшего порядка:

Также в библиотеке есть обычная функция Del_Accumulator - вспомогательная функция для функции Map_Accumulator (удаляет аккумулятор из возвращаемого выражения функции Map_Accumulator).

2.12. Функции и спецификаторы, специфичные для сред Windows и POSIX

В библиотеке есть функции и спецификаторы, специфичные для сред Windows и POSIX. Т.е. возвращаемые выражения этих функций и множества спецификаторов различны для сред Windows и POSIX. Они применяются для написания программ, по разному ведущих себя в средах Windows и POSIX.

Такими функциями являются:

Специфичными спецификаторами являются:

2.13. Системные функции

В библиотеке РефалАБ присутствуют следующие системные функции:

2.14. Функции для работы со случайными числами

В библиотеке РефалАБ присутствуют следующие функции для работы со случайными числами:

2.15. Пустые функции

В библиотеке РефалАБ присутствуют следующие пустые функции:

2.16. Описание функций

Здесь представлены описания функций, расположенных в алфавитном порядке. Для каждой функции приводится формат вызова (передаваемые аргументы), описание, возвращаемое значение и пример вызова функции в формате

<вызов функции> --> <результат замены>

Функция add

ВЫЗОВ:

<add (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

Функция add предназначена для сложения двух целых чисел E.E1 и E.E2.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Результатом вызова функции add является целое число (сложение E.E1 и E.E2). Если результат положительный, то знак ‘+’ не ставитcя. Нулевой результат выдается в виде макроцифры 0.

ПРИМЕРЫ:

<add (1) 2> --> 3
<add ( ) 2> --> 2
<add (4294967295) 2> --> 1 1

Функция addn

ВЫЗОВ:

<addn (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Как в add, только нулевой результат выдается в виде пустого выражения.

ПРИМЕР:

<addn () > -->

Функция Append_FBytes

ВЫЗОВ:

<Append_FBytes S.n (E.f) E.b>

где S.n - номер файла (макроцифра от 0 до 9); E.f - выражение из символов-литер, представляющее собой имя файла (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX; E.b - выражение (может быть пустым), которое содержит только символы-литеры и макроцифры.

ОПИСАНИЕ:

Эта функция открывает файл на дозапись в уже существующий файл. Если файл не существует, то файл будет создан, и в него будет осуществляться обычная запись с самого начала. Далее функция записывает в конец файла байты E.b. При этом все символы-литеры в выражении E.b преобразуются в ихние 8-битные коды от 0 до , а макроцифры в выражении E.b преобразуются по модулю 256 в числа от 0 до . В конце работы функция закрывает файл.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение:

ПРИМЕРЫ:

<Append_FBytes 3 ('input.bin') 'n' 89> -->
и в конец файла допишутся байты 110 и 89

Файл 'input.bin' не может быть открыт
<Append_FBytes 3 ('input.bin') 'n' 89> -->  'описание кода ошибки' &NULL

Функция Append_File

ВЫЗОВ:

<Append_File S.n (E.f) E.l>

где S.n - номер файла (макроцифра от 0 до 9); E.f - выражение из символов-литер, представляющее собой имя файла (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX; E.l - выражение (может быть пустым) вида (E.l1)…(E.ln), E.l1…E.ln содержат только символы-литеры.

ОПИСАНИЕ:

Эта функция открывает файл на дозапись в уже существующий файл. Если файл не существует, то файл будет создан, и в него будет осуществляться обычная запись с самого начала. Далее функция записывает в конец файла строки E.l1…E.ln. Ели любое из этих выражений пусто, в файл добавляется пустая строка. Если E.l - пусто, то в файл ничего не записывается. В конце работы функция закрывает файл.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение:

ПРИМЕРЫ:

<Append_File 3 ('input.txt') ('next string') ('last string')> -->
и в конец файла допишутся строки 'next string' и 'last string'

Файл 'input.txt' не может быть открыт
<Append_File 3 ('input.txt') ('next string') ('last string')> -->  'описание кода ошибки' &NULL

Функция Apply

ВЫЗОВ:

<Apply W.c E.e>

где W.c - терм, являющийся функцией, E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция высшего порядка вызывает функцию, т.е. применяет функцию W.c к аргументу функции E.e. Если W.c - символ-метка, то функция вызывается так < W.c E.e>. Если W.c - частично-примененная функция (W.p E.b), то происходит применение функции W.p к аргументу E.b E.e.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение, являющееся результатом применения функции W.c к аргументу функции E.e.

ПРИМЕРЫ:

<Apply &add (2) 1> --> 3
<Apply (&add (2)) 1> --> 3

Функция arg

ВЫЗОВ:

<arg N.n>

где N.n - макроцифра.

ОПИСАНИЕ:

Функция arg возвращает аргумент командной строки с номером N.n.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение из объектных символов, представляющее аргумент с номером N.n командной строки. Нумерация аргументов идет с единицы. Если N.n = 0, то аргумент есть имя программы. Если N.n больше количества аргументов, то E.r - пустое выражение.

ПРИМЕРЫ:

Запуск рефал-программы из командной строки Windows: test -d
<arg 0> --> 'test.exe'
<arg 1> --> '-d'
<arg 2> -->

Запуск рефал-программы из терминала в среде POSIX: ./test -d
<arg 0> --> './test'
<arg 1> --> '-d'
<arg 2> -->

Функция ArgList

ВЫЗОВ:

<ArgList>

ОПИСАНИЕ:

Функция ArgList возвращает все аргументы командной строки.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.a

где E.a - выражение (V.a1)…(V.an), где V.ai, i=1…n - выражение из объектных символов, представляющее аргумент с номером i командной строки, n - количество таких аргументов. Если аргументов нет, то E.a - пусто.

ПРИМЕРЫ:

Запуск рефал-программы test
<ArgList > -->

Запуск рефал-программы test -d -i
<ArgList > --> ('-d') ('-i')

Функция card

ВЫЗОВ:

<card E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

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

Если E.e не пусто, то в начале работы функция выводит выражение E.e в стандартный выходной поток, как-будто она вызывает функцию

<wrouts E.e>

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

После вызова функции card программа переходит в состояние ожидания ввода строки. По окончании ввода (нажатии клавиши “Enter”) введенная строка и будет возвращаемым значением. Если в процессе ввода функция обнаружила в потоке EOF, то функция завершает работу и последний символ в возвращаемом выражении будет макроцифра 0.

ПРИМЕР:

<card > --> 'эта строка введена с клавиатуры'

Функция change_dir

ВЫЗОВ:

<change_dir E.d>

где E.d - выражение из символов-литер, задаюшее имя директории (возможно, с указанием пути), не превышающее 4096 символов.

ОПИСАНИЕ:

Изменяет текущий рабочий каталог на E.d.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение из символов-литер:

ПРИМЕРЫ:

<change_dir 'test'> -->
<change_dir 'd:\\test\\a'> -->
<change_dir 'test/a'> -->

Процесс изменения текущего рабочего каталога завершился с ошибкой 
<change_dir 'a.a'> --> 'описание кода ошибки'

ЗАМЕЧАНИЕ: обратный слэш изображается путем двукратного повторения.

Функция chartof

ВЫЗОВ:

<chartof V.c>

где V.c - непустая цепочка объектных символов.

ОПИСАНИЕ:

Функция chartof превращает цепочку литер в символ-метку, имеющий имя, совпадающее с заданной цепочкой литер. Цепочка литер обязанна быть непустой, количество литер не превышать 255, литеры могут быть любыми. Функция chartof создает и поддерживает таблицу символов-меток, порожденных ею из цепочек литер. Если цепочка литер встретилась в первый раз, то создается пустая функция, имя которой является соответствующим символом-меткой. Если такая же цепочка литер встречается еще раз, то новая функция не создается, а в качестве результата вырабатывается имя ранее созданной функции.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: символ-метка

ПРИМЕРЫ:

<chartof '$assA3434^&'> --> &$ASSA3434^&
<chartof 'ABCD'> --> &ABCD

Функция chr

ВЫЗОВ:

<chr E.n>

где E.n - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция заменяет в выражении E.n все макроцифры символами-литерами с соответствующим 8-битным кодом (по модулю 256).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.c

где E.c - выражение E.n, в котором все макроцифры заменены символами-литерами.

ПРИМЕР:

<chr 318 'h' ('j') (65)> --> '>' 'h' ('j') ('A')

Функция Cvb

ВЫЗОВ:

<Cvb E.d>

где E.d - цепочка символов-литер произвольной длины, являющаяся десятичной записью целого числа со знаком или без него. Пустое выражение эквивалентно нулю.

ОПИСАНИЕ:

Преобразует целое число E.d из символьного представления в цепочку макроцифр (возможно со знаком).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.n

где V.n - число в виде цепочки макроцифр. Если результат положителен - знак ‘+’ не ставитcя. Нулевой результат выдается в виде макроцифры 0.

ПРИМЕРЫ:

<Cvb > --> 0
<Cvb '+025'> --> 25
<Cvb '1000000000'> --> 1000000000

Функция Cvd

ВЫЗОВ:

<Cvd E.n>

где E.n - целое число в виде цепочки макроцифр (возможно, со знаком) (может быть пустое).

ОПИСАНИЕ:

Преобразует целое число в символьное представление.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.d

где V.d - цепочка символов-литер, являющаяся записью числа E.n в десятичной системе счисления. Если число E.n положительно - знак ‘+’ в E.d не ставитcя. Нулевой результат изображается как ‘0’.

ПРИМЕРЫ:

<Cvd '-' 1000000000> --> '-1000000000'
<Cvd > --> '0'
<Cvd 0> --> '0'

Функция Dec

ВЫЗОВ:

<Dec E.N>

где E.N - целое число (может быть пустое).

ОПИСАНИЕ:

Функция Dec производит вычитание единицы из целого числа E.N.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Результатом вызова функции Dec является целое число (вычитание из E.N единицы). Если результат положительный, то знак ‘+’ не ставитcя. Нулевой результат выдается в виде макроцифры 0.

ПРИМЕРЫ:

<Dec '+' 1> --> 0
<Dec > --> '-' 1
<Dec '-' 4294967295> --> '-' 1 0

Функция Del_Accumulator

ВЫЗОВ:

<Del_Accumulator W.a E.e>

где W.a - терм, E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция Del_Accumulator - вспомогательная функция для функции Map_Accumulator (удаляет аккумулятор Wa из возвращаемого выражения WaEe функции Map_Accumulator).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

ПРИМЕРЫ:

<Del_Accumulator (1)> -->
<Del_Accumulator (1 6) (1) (3)> --> (1) (3)

Функция delf

ВЫЗОВ:

<delf>

ОПИСАНИЕ:

Функция delf изменяет поле зрения, удаляя из него функциональные термы, находящиеся в определенной цепочке, являющаяся частью последовательности становления ведущими функциональных термов. Начало цепочки - функциональный терм, который станет ведущим после ведущего функционального терма, т.е. после вызова функции delf. Конец цепочки - функциональный терм, за которым следует сразу символ ‘#’. Также удаляется символ ‘#’. Если функция не находит символ ‘#’, происходит аварийное завершение программы с выдачой сообщения “sign ‘#’ missing”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕРЫ:

поле зрения: 'Hello World!'<DELF><PRINT'delf1'><PRINT'delf2'>'#'<PRINT'delf'>
<delf> -->
поле зрения: 'Hello World!'<PRINT'delf'>

поле зрения: 'Hello World!'<DELF><PRINT'delf1'<PRINT'delf2'>'ok'<PRINT'delf3'>'#delf'>
<delf> -->
поле зрения: 'Hello World!'<PRINT'delf1okdelf'>

Функция Directory_Separator

ВЫЗОВ:

<Directory_Separator>

ОПИСАНИЕ:

Функция Directory_Separator возвращает основной символ для разделения уровней папок в строке пути в текущей среде.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.d

где S.d - символ-литера:

ПРИМЕРЫ:

Среда Windows
<Directory_Separator> --> '\\'

Среда POSIX
<Directory_Separator> --> '/'

ЗАМЕЧАНИЕ: обратный слэш изображается путем двукратного повторения.

Функция div

ВЫЗОВ:

<div (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

Функция div предназначена для целочисленного деления числа E.E1 на число E.E2. Попытка делить на ноль приводит к авосту “Отождествление невозможно”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Целое число, представляющее собой неокругленное частное от деления E.E1 на E.E2. Если результат положителен - знак ‘+’ не ставитcя. Нулевой результат выдается в виде макроцифры 0.

ПРИМЕРЫ:

<div (5) 3> --> 1
<div (5) '-' 3> --> '-' 1
<div ('-' 5) 3> --> '-' 1
<div ('-' 5) '-' 3> --> 1

Функция divn

ВЫЗОВ:

<divn (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Как в div, только нулевой результат выдается в виде пустого выражения.

ПРИМЕР:

<divn () 3> -->

Функция dr

ВЫЗОВ:

<dr (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

Функция dr предназначена для целочисленного деления с остатком числа E.E1 на число E.E2. Попытка делить на ноль приводит к авосту “Отождествление невозможно”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.q (E.r)

где E.q (целое число) - частное от деления E.E1 на E.E2 , а E.r (целое число) - остаток. И частное, и остаток выдаются без незначащих нулей и без знака ‘+’. Нулевые E.q и E.r выдаются в виде макроцифры 0. Знаки чисел учитываются следующим образом: сначала производим деление, не обращая внимания на знаки, а затем частному и остатку приписываем такие знаки, чтобы выполнялось соотношение:

E.E1 = E.q * E.E2 + E.r

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

ПРИМЕРЫ:

<dr (5) 3> --> 1 (2)
<dr (5) '-' 3> --> '-' 1 (2)
<dr ('-' 5) 3> --> '-' 1 ('-' 2)
<dr ('-' 5) '-' 3> --> 1 ('-' 2)

Функция drn

ВЫЗОВ:

<drn (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Как в dr, только нулевой результат выдается в виде пустого выражения.

ПРИМЕРЫ:

<drn (10) 5> --> 2 ()
<drn () 3> --> ()

Функция Empty

ВЫЗОВ:

<Empty E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция Empty возвращает пустое выражение.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕРЫ:

<Empty > -->
<Empty 'd' 0 ()> -->

Функция Exist

ВЫЗОВ:

<Exist W.s E.e>

где W.s - терм, E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция Exist проверяет, существует ли терм W.s в выражении E.e на нулевом уровне.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

<Exist 's' 's'> --> &TRUE
<Exist 's' 'r'> --> &FALSE

Функция exist_dir

ВЫЗОВ:

<exist_dir E.d>

где E.d - выражение из символов-литер, задаюшее имя директории (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX.

ОПИСАНИЕ:

Функция проверяет, существует ли директория с именем E.d.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

<exist_dir 'test'> --> &TRUE
<exist_dir 'a.b'> --> &FALSE
<exist_dir > --> &FALSE

Функция exist_file

ВЫЗОВ:

<exist_file E.f>

где E.f - выражение из символов-литер, задаюшее имя файла (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX.

ОПИСАНИЕ:

Функция проверяет, существует ли файл с именем E.f.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

В папке находится файл "a.a"
<exist_file 'a.a'> --> &TRUE

В папке не находится файл "a.b"
<exist_file 'a.b'> --> &FALSE

<exist_file > --> &FALSE

Функция exit

ВЫЗОВ:

<exit V.n>

где V.n - целое число в виде одной макроцифры (возможно, со знаком) в диапазоне от -2147483648 до 2147483647.

ОПИСАНИЕ:

Функция exit заврешает программу с кодом состояния завершения V.n.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕРЫ:

<exit 0> -->
<exit 1> -->
<exit '-' 1> -->

Функция fclose

ВЫЗОВ:

<fclose S.n>

где S.n - номер файла (макроцифра от 0 до 9).

ОПИСАНИЕ:

Эта функция закрывает файл с заданным номером.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение:

ПРИМЕРЫ:

<fclose 3> -->

Закрытие файла завершилось с ошибкой 
<fclose 3> --> 'описание кода ошибки'

Файл не открыт
<fclose 3> --> &NULL

Функция fgets

ВЫЗОВ:

<fgets S.n>

где S.n - номер файла (макроцифра от 0 до 9) или стандартный входной поток (символ-метка &StdIn).

ОПИСАНИЕ:

Функция fgets читает очередную строку, начиная с текущей позиции, из предварительно открытого файла с помощью функции fopen с заданным номером или стандартного входного потока.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - очередная строка из файла или стандартного входного потока в виде выражения объектных символов. Если в процессе чтения строки функция обнаружила EOF или ошибку в файле, то функция завершает работу и последний символ в возвращаемом выражении будет символ-метка &FEOF (если конец файла) или &FError (если ошибки в файле). Если файл не открыт, то E.r = &NULL.

ПРИМЕРЫ:

<fgets 3> --> 'это очередная прочитанная строка'
<fgets 3> --> 'это следующая строка из того же файла'
<fgets 3> --> &FEOF

Файл не открыт
<fgets 3> --> &NULL

Функция first

ВЫЗОВ:

<first N.n E.e>

где N.n - макроцифра, а E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция предназначена для отщепления от начала выражения E.e части, имеющей указанную длину N.n в термах нулевого уровня.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Если E.e представляет собой последовательность из менее, чем Nn термов, результатом замены является выражение:

'*' E.e

Если же длина E.e не меньше, чем N.n термов, результатом замены является

(E.e1) E.e2

где E.e1 и E.e2 - такие выражения, что E.e = E.e1 E.e2, и при этом E.e1 является последовательностью ровно из N.n термов.

ПРИМЕРЫ:

<first 2 'A'('B')'C'> --> ('A'('B')) 'C'
<first 5 'A'('B')'C'> --> '*A'('B')'C'

Функция FoldL

ВЫЗОВ:

<FoldL W.c W.a E.e>

где W.c - терм, являющийся функцией, W.a - терм, являющийся начальным значением аккумулятора, E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция высшего порядка производит левую свертку, т.е., если E.e не пусто, последовательно применяет функцию W.c к терму, являющимся текущим значением аккумулятора, начиная с начального, и к текущему терму нулевого уровня выражения E.e, начиная с первого. Результат этого применения - терм W.wi, i=1…n (n - количество термов нулевого уровня выражения E.e), который становится новым текущим значением аккумулятора. Результат функции - W.wn.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: W.r

где W.r - терм:

ПРИМЕРЫ:

поле памяти: Add1 (E.E1) (E.E2) = (<add (E.E1) E.E2>)
<FoldL &Add1 (1)> --> (1)

поле памяти: Add1 (E.E1) (E.E2) = (<add (E.E1) E.E2>)
<FoldL &Add1 (1) (2) (1 3)> --> (1 6)

Функция FoldR

ВЫЗОВ:

<FoldR W.c E.e W.a>

где W.c - терм, являющийся функцией, E.e - произвольное объектное выражение, W.a - терм, являющийся начальным значением аккумулятора.

ОПИСАНИЕ:

Эта функция высшего порядка производит правую свертку, т.е., если E.e не пусто, последовательно применяет функцию W.c к текущему терму нулевого уровня выражения E.e, начиная с последнего в обратном порядке, и к терму, являющимся текущим значением аккумулятора, начиная с начального. Результат этого применения - терм W.wi, i=1…n (n - количество термов нулевого уровня выражения E.e), который становится новым текущим значением аккумулятора. Результат функции - W.wn.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: W.r

где W.r - терм:

ПРИМЕРЫ:

поле памяти: Add1 (E.E1) (E.E2) = (<add (E.E1) E.E2>)
<FoldR &Add1 (1)> --> (1)

поле памяти: Add1 (E.E1) (E.E2) = (<add (E.E1) E.E2>)
<FoldR &Add1 (2) (1 3) (1)> --> (1 6)

Функция fopen

ВЫЗОВ:

<fopen S.z S.n E.b E.f>

где S.z - символ-литера, S.n - номер файла (макроцифра от 0 до 9), E.b - символ-литера (воможно пусто), E.f - выражение из символов-литер, представляющее собой имя файла (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX.

Если S.z - ‘R’ или ‘r’, то файл открывается на чтение.

Если S.z - ‘W’ или ‘w’, то файл открывается на запись. Если файл существует, то файл будет перезаписан. Если файл не существует, то файл будет создан.

Если S.z - ‘A’ или ‘a’, то файл открывается на дозапись в уже существующий файл. Если файл не существует, то файл будет создан, и в него будет осуществляться обычная запись с самого начала.

Если E.b - пусто, то файл открывается в текстовом режиме.

Если E.b = ‘B’ или ‘b’, то файл открывается в двоичном режиме.

ОПИСАНИЕ:

Эта функция открывает файл на чтение или на запись (или дозапись) и связывает с ним заданный номер.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение из символов-литер:

ПРИМЕРЫ:

<fopen 'r'3'input.txt'> -->
<fopen 'a'0'c:\\refal\\examples\\test.txt'> -->
<fopen 'a'0'examples/test.txt'> -->

Открытие файла 'input.txt' завершилось с ошибкой 
<fopen 'r'3'input.txt'> --> 'описание кода ошибки'

ЗАМЕЧАНИЕ: обратный слэш изображается путем двукратного повторения.

Функция fprint

ВЫЗОВ:

<fprint S.n E.e>

где S.n - номер файла (макроцифра от 0 до 9) или стандартный выходной поток (символ-метка &StdOut) или стандартный поток вывода ошибки (символ-метка &StdErr), а E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция fprint записывает в файл с заданным номером (предварительно открытый с помощью функции fopen), начиная с текущей позиции, или стандартный выходной поток или стандартный поток вывода ошибки выражение E.e без перехода на новую строку. При использовании функции fprint выражение E.e записывается следующим образом. Символы-литеры (объектные знаки) выводятся в виде соответствующих литер. Структурные скобки “(“ и “)” выводятся в виде литер “(“ и “)”. Составные символы печатаются в том же виде, как они изображаются в РефалАБ-программах, за исключением того, что в качестве ограничителей для символов-ссылок и нестандартных символов используется не “/”, а апостроф “’”. Символы-числа обрамляются апострофами “’”. Символы-метки выводятся в виде имени символа-метки, обрамленного апострофами “’”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение:

ПРИМЕРЫ:

<fprint 0 'function' (&f1)> -->
и в файл запишется строка 'function('F1')'

Файл не открыт
<fprint 0 'function' (&f1)> --> &NULL

Функция fprintm

ВЫЗОВ:

<fprintm S.n E.e>

где S.n - номер файла (макроцифра от 0 до 9) или стандартный выходной поток (символ-метка &StdOut) или стандартный поток вывода ошибки (символ-метка &StdErr), а E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Аналогична функции fprint. Только при использовании функции fprintm выражение записывается в том же виде, в котором оно записывается в исходных РефалАБ-программах. Единственное различие заключается в том, что при переходе на следующую строку не ставится признак продолжения “+”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение:

ПРИМЕРЫ:

<fprintm 0 'function' (&f1)> -->
и в файл запишется строка ''function'(&F1)'

Файл не открыт
<fprintm 0 'function' (&f1)> --> &NULL

Функция fprints

ВЫЗОВ:

<fprints S.n E.e>

где S.n - номер файла (макроцифра от 0 до 9) или стандартный выходной поток (символ-метка &StdOut) или стандартный поток вывода ошибки (символ-метка &StdErr), а E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Аналогична функции fprint. Только при использовании функции fprints символы выражения не обрамляются апострофами.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение:

ПРИМЕРЫ:

<fprint 0 'function' (&f1)> -->
и в файл запишется строка 'function(F1)'

Файл не открыт
<fprint 0 'function' (&f1)> --> &NULL

Функция fputs

ВЫЗОВ:

<fputs S.n E.e>

где S.n - номер файла (макроцифра от 0 до 9) или стандартный выходной поток (символ-метка &StdOut) или стандартный поток вывода ошибки (символ-метка &StdErr), а E.e - выражение, которое содержит только символы-литеры.

ОПИСАНИЕ:

Функция fputs записывает в файл с заданным номером (предварительно открытый с помощью функции fopen), начиная с текущей позиции, или стандартный выходной поток или стандартный поток вывода ошибки очередную строку E.e без перехода на новую строку.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение:

ПРИМЕРЫ:

<fputs 0 'next string'> -->
и в файл запишется строка 'next string'

Файл не открыт
<fputs 0 'next string'> --> &NULL

Функция fread

ВЫЗОВ:

<fread S.n S.c>

где S.n - номер файла (макроцифра от 0 до 9), S.c - макроцифра.

ОПИСАНИЕ:

Функция fread читает очередные байты (максимальное количество S.c), начиная с текущей позиции, из предварительно открытого с помощью функции fopen файла с заданным номером.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - очередные байты из “файла чтения” (максимальное количество S.c) в виде выражения макроцифр. Если в процессе чтения байт функция обнаружила EOF или ошибку в файле, то функция завершает работу и последний символ в возвращаемом выражении будет символ-метка &FEOF (если конец файла) или &FError (если ошибки в файле). Если файл не открыт, то E.r = &NULL.

ПРИМЕРЫ:

<fread 3 3> --> очередные три байта
<fread 3 3> --> это очередные три байта из того же файла
<fread 3 3> --> &FEOF

Файл не открыт
<fread 3 3> --> &NULL

Функция fseek

ВЫЗОВ:

<fseek S.n V.n S.f>

где S.n - номер файла (макроцифра от 0 до 9), V.n - целое число в виде одной макроцифры (возможно, со знаком) в диапазоне от -2147483648 до 2147483647, S.f - символ-метка, определяющая начальную позицию.

Если S.f = &Begin, то начальная позиция - начало файла.

Если S.f = &End, то начальная позиция - конец файла.

Если S.f = &Cur, то начальная позиция - текущая позиция файлового указателя.

ОПИСАНИЕ:

Эта функция перемещает файловый указатель на определенное количество байт V.n, начиная с позиции S.f.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение:

ПРИМЕРЫ:

<fseek 3 5 &Begin> -->

Перемещение указателя завершилось с ошибкой 
<fseek 3 '-' 5 &Begin> --> 'описание кода ошибки'

Файл не открыт
<fseek 3 5 &Begin> --> &NULL

Функция ftell

ВЫЗОВ:

<ftell S.n>

где S.n - номер файла (макроцифра от 0 до 9).

ОПИСАНИЕ:

Эта функция возвращает текущее положение указателя файла.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.e

где V.e - выражение:

ПРИМЕРЫ:

<ftell 3> --> 0

Возвращение текущего положения указателя файла завершилось с ошибкой 
<ftell 3> --> 'описание кода ошибки'

Файл не открыт
<ftell 3> --> &NULL

Функция ftochar

ВЫЗОВ:

<ftochar F.x>

где F.x - символ-метка.

ОПИСАНИЕ:

Эта функция превращает символ-метку в цепочку объектных символов, которая является именем символа-метки.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Результатом замены является цепочка объектных символов, являющаяся именем символа F.x.

ПРИМЕРЫ:

<ftochar &assa3434> --> 'ASSA3434'
<ftochar &ABCD> --> 'ABCD'

Функция functab

ВЫЗОВ:

<functab F.x>

где F.x - символ-метка.

ОПИСАНИЕ:

В некоторых случаях требуется, чтобы символ-метка, создаваемый из некоторой цепочки литер заведомо совпадал с символом-меткой, определенным в РефалАБ-программе и имеющим имя, полностью совпадающее с данной цепочкой литер. Это достигается с помощью функции functab, которая регистрирует в таблице символов, создаваемой функцией chartof, указанный символ-метку F.x. После этого, всякий раз, когда функция chartof будет получать цепочку литер, совпадающую с именем символа F.x, результатом функции chartof будет символ F.x.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕР:

Пусть в РефалАБ-программе определена некоторая функция func1. Тогда

<functab &func1> -->

и в таблице символов функции chartof окажется зарегистрированным символ-метка &FUNC1.

Функция fwrite

ВЫЗОВ:

<fwrite S.n E.b>

где S.n - номер файла (макроцифра от 0 до 9), а E.b - выражение (может быть пустым), которое содержит только символы-литеры и макроцифры.

ОПИСАНИЕ:

Функция fwrite записывает в файл с заданным номером (предварительно открытый с помощью функции fopen), начиная с текущей позиции, очередные байты E.b. При этом все символы-литеры в выражении E.b преобразуются в ихние 8-битные коды от 0 до 255, а макроцифры в выражении E.b преобразуются по модулю 256 в числа от 0 до 255.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение:

ПРИМЕР:

<fwrite 0 'n' 89> -->
и в файл запишутся байты 110 и 89

Файл не открыт
<fwrite 0 'n' 89> --> &NULL

Функция gcd

ВЫЗОВ:

<gcd (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

Функция gcd предназначена для вычисления наибольшего общего делителя двух целых чисел E.E1 и E.E2. Если E.E1 и E.E2 равны нулю, возникает авост “Отождествление невозможно”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Результатом вызова функции gcd является положительное целое число (знак ‘+’ не ставитcя), которое является наибольшим общим делителем чисел E.E1 и E.E2.

ПРИМЕРЫ:

<gcd (6) 15> --> 3
<gcd ('-' 6) 15> --> 3
<gcd (15) 1> --> 1
<gcd (15) 0> --> 15
<gcd (15) > --> 15

Функция get_current_dir

ВЫЗОВ:

<get_current_dir >

ОПИСАНИЕ:

Функция возвращает текущий рабочий каталог.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение из объектных символов, представляющее собой текущий рабочий каталог. Если невозможно получить текущий рабочий каталог, то E.r - пустое выражение.

ПРИМЕР:

<get_current_dir > --> 'текущий рабочий каталог'

Функция get_env

ВЫЗОВ:

<get_env E.c>

где E.c - цепочка объектных символов, представляющая имя переменной окружения, не превышающее 32767 символов.

ОПИСАНИЕ:

Функция get_env возвращает значение переменной окружения с заданным именем E.c.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.v

где E.v - значение переменной окружения с заданным именем E.c в виде цепочки объектных символов. Если переменная окружения не установлена, E.v - символ-метка &NULL.

ПРИМЕРЫ:

Среда Windows
<get_env> --> &NULL
<get_env 'path'> --> 'значение переменной окружения PATH'
<get_env 'PATH'> --> 'значение переменной окружения PATH'

Среда POSIX
<get_env> --> &NULL
<get_env 'path'> --> &NULL
<get_env 'PATH'> --> 'значение переменной окружения PATH'

Функция Get_Max_Number

ВЫЗОВ:

<Get_Max_Number>

ОПИСАНИЕ:

Функция Get_Max_Number возвращает максимальное значение макроцифры 4294967295.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Макроцифра 4294967295.

ПРИМЕР:

<Get_Max_Number> --> 4294967295

Функция Get_Max_PathFileName

ВЫЗОВ:

<Get_Max_PathFileName>

ОПИСАНИЕ:

Функция Get_Max_PathFileName возвращает максимальную длину имени файла (возможно, с указанием пути) в текущей среде.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.n

где S.n - макроцифра:

ПРИМЕРЫ:

Среда Windows
<Get_Max_PathFileName> --> 260

Среда POSIX
<Get_Max_PathFileName> --> 4096

Функция Inc

ВЫЗОВ:

<Inc E.N>

где E.N - целое число (может быть пустое).

ОПИСАНИЕ:

Функция Inc производит прибавление единицы к целому числу E.N.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Результатом вызова функции Inc является целое число (сложение E.N и 1). Если результат положительный, то знак ‘+’ не ставитcя. Нулевой результат выдается в виде макроцифры 0.

ПРИМЕРЫ:

<Inc '-' 1> --> 0
<Inc > --> 1
<Inc 4294967295> --> 1 0

Функция Is_Directory_Separator

ВЫЗОВ:

<Is_Directory_Separator S.d>

где S.d - произвольный символ.

ОПИСАНИЕ:

Функция Is_Directory_Separator определяет принадлежность символа к символам для разделения уровней папок в строке пути в текущей среде. Символы для разделения уровней папок в строке пути:

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

Среда Windows
<Is_Directory_Separator '\\'> --> &TRUE
<Is_Directory_Separator '/'> --> &TRUE
<Is_Directory_Separator ';'> --> &FALSE

Среда POSIX
<Is_Directory_Separator '/'> --> &TRUE
<Is_Directory_Separator '\\'> --> &FALSE

ЗАМЕЧАНИЕ: обратный слэш изображается путем двукратного повторения.

Функция is_eof

ВЫЗОВ:

<is_eof S.n>

где S.n - номер файла (макроцифра от 0 до 9) или стандартный входной поток (символ-метка &StdIn) или стандартный выходной поток (символ-метка &StdOut) или стандартный поток вывода ошибки (символ-метка &StdErr).

ОПИСАНИЕ:

Функция is_eof проверяет окончание файла S.n или наличие ошибок в файле.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

<is_eof 0> --> &FALSE
<is_eof 0> --> &TRUE

Файл не открыт
<is_eof 0> --> &NULL

Функция is_feof

ВЫЗОВ:

<is_feof S.n>

где S.n - номер файла (макроцифра от 0 до 9) или стандартный входной поток (символ-метка &StdIn) или стандартный выходной поток (символ-метка &StdOut) или стандартный поток вывода ошибки (символ-метка &StdErr).

ОПИСАНИЕ:

Функция is_feof проверяет окончание файла S.n.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

<is_feof 0> --> &FALSE
<is_feof 0> --> &TRUE

Файл не открыт
<is_feof 0> --> &NULL

Функция is_ferror

ВЫЗОВ:

<is_ferror S.n>

где S.n - номер файла (макроцифра от 0 до 9) или стандартный входной поток (символ-метка &StdIn) или стандартный выходной поток (символ-метка &StdOut) или стандартный поток вывода ошибки (символ-метка &StdErr).

ОПИСАНИЕ:

Функция is_ferror проверяет наличие ошибок в файле S.n.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

<is_ferror 0> --> &FALSE
<is_ferror 0> --> &TRUE

Файл не открыт
<is_ferror 0> --> &NULL

Функция Is_Max_Number

ВЫЗОВ:

<Is_Max_Number S.n>

где S.n - произвольный символ.

ОПИСАНИЕ:

Функция Is_Max_Number проверяет, является ли S.n максимальным значением макроцифры 4294967295.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

<Is_Max_Number 4294967295> --> &TRUE
<Is_Max_Number 4> --> &FALSE

Функция Is_Max_PathFileName

ВЫЗОВ:

<Is_Max_PathFileName S.n>

где S.n - произвольный символ.

ОПИСАНИЕ:

Функция Is_Max_PathFileName проверяет, является ли S.n максимальной длиной имени файла (возможно, с указанием пути) в текущей среде.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

Среда Windows
<Is_Max_PathFileName 260> --> &TRUE
<Is_Max_PathFileName 4096> --> &FALSE

Среда POSIX
<Is_Max_PathFileName 4096> --> &TRUE
<Is_Max_PathFileName 260> --> &FALSE

Функция Is_Type

ВЫЗОВ:

<Is_Type S.t E.e>

где S.t - символ-метка, определяющая тип или подтип выражения E.e;

E.e - произвольное объектное выражение.

Если S.t = &Void, то тип выражения - Void.

Если S.t = &Label, то тип выражения - Label.

Если S.t = &Number, то тип выражения - Number.

Если S.t = &Reference, то тип выражения - Reference.

Если S.t = &Char, то тип выражения - Char.

Если S.t = &Brackets, то тип выражения - Brackets.

Если S.t = &OtherT, то тип выражения - OtherT.

Если E.s = &Latin, то подтип выражения - Latin.

Если E.s = &Digit, то подтип выражения - Digit.

ОПИСАНИЕ:

Функция Is_Type определяет принадлежность выражения E.e к указанному типу или подтипу S.t. Тип выражения зависит от терма, с которого начинается выражение E.e. Типы выражения могут быть:

Если выражениие E.e начинается с символа-литеры, то выражение также может иметь один из двух подтипов:

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.p

где S.p - символ-метка:

ПРИМЕРЫ:

<Is_Type &Void > --> &True
<Is_Type &Void '9'> --> &False
<Is_Type &Number 9> --> &True
<Is_Type &Number '9'> --> &False
<Is_Type &Char '9'> --> &True
<Is_Type &Char 9> --> &False

Функция Is_White_Space

ВЫЗОВ:

<Is_White_Space S.w>

где S.w - произвольный символ.

ОПИСАНИЕ:

Функция Is_White_Space проверяет, является ли S.w пробелом. Пробелы - это ‘ ‘, ‘\n’, ‘\t’, ‘\v’, ‘\f’, ‘\r’.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t

где S.t - символ-метка:

ПРИМЕРЫ:

<Is_White_Space '\t'> --> &TRUE
<Is_White_Space 'r'> --> &FALSE

Функция last

ВЫЗОВ:

<last N.n E.e>

где N.n - макроцифра, E.e - произвольное выражение.

ОПИСАНИЕ:

Эта функция предназначена для отщепления от конца выражения E.e части, имеющей указанную длину N.n в термах нулевого уровня.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Если E.e представляет собой последовательность из менее, чем N.n термов, результатом замены является

E.e '*'

Если же длина E.e составляет не менее, чем N.n термов, результатом замены является

E.e1 (E.e2)

где E.e1 и E.e2 - такие выражения, что E.e = E.e1 E.e2 и при этом E.e2 является последовательностью ровно из N.n термов.

ПРИМЕРЫ:

<last 2 'A'('B')'C'> --> 'A'(('B')'C')
<last 5 'A'('B')'C'> --> 'A'('B')'C*'

Функция lengr

ВЫЗОВ:

<lengr E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция предназначена для вычисления длины аргумента, т.е. количества символов и скобок, составляющих E.e. При достижениии длины 4294967295, длина обнуляется.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: N.n E.e

где N.n - макроцифра, значение которой равно длине выражения E.e.

ПРИМЕР:

<lengr 'A' () ('A')> --> 6 'A' () ('A')

Функции lengw

ВЫЗОВ:

<lengw E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция lengw выдает длину выражения, измеренную в термах, т.е. количество термов нулевого уровня, составляющих E.e. При достижениии длины 4294967295, длина обнуляется.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: N.n E.e

где N.n - макроцифра, которая равна длине выражения E.e.

ПРИМЕРЫ:

<lengw 'A' () ('A')> --> 3 'A' () ('A')
<lengw > --> 0

Функция Load_FBytes

ВЫЗОВ:

<Load_FBytes S.n E.f>

где S.n - номер файла (макроцифра от 0 до 9); E.f - выражение из символов-литер, представляющее собой имя файла (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX.

ОПИСАНИЕ:

Эта функция открывает файл на чтение в бинарном режиме. Далее функция читает все байты из открытого файла. В конце работы функция закрывает файл.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.e

где V.e - выражение:

ПРИМЕРЫ:

<Load_FBytes 3 'input.bin'> --> байты &FEOF

Файл 'input.bin' не может быть открыт
<Load_FBytes 3 'input.bin'> -->  'описание кода ошибки' &NULL

Функция Load_File

ВЫЗОВ:

<Load_File S.n E.f>

где S.n - номер файла (макроцифра от 0 до 9); E.f - выражение из символов-литер, представляющее собой имя файла (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX.

ОПИСАНИЕ:

Эта функция открывает файл на чтение. Далее функция читает все строки из открытого файла. В конце работы функция закрывает файл.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.e

где V.e - выражение:

ПРИМЕРЫ:

<Load_File 3 'input.txt'> --> ('первая строка файла')...('последняя строка файла') &FEOF

Файл 'input.txt' не может быть открыт
<Load_File 3 'input.txt'> -->  'описание кода ошибки' &NULL

Функция lower

ВЫЗОВ:

<lower E.C>

где E.C - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция заменяет в выражении E.C все заглавные латинские символы-литеры строчными символами-литерами.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.n

где E.n - выражение E.C, в котором все заглавные латинские символы-литеры строчными символами-литерами.

ПРИМЕР:

<lower '>' 0 ('j') ('A')> --> '>' 0 ('j') ('a')

Функция lrel

ВЫЗОВ:

<lrel (E.E1) E.E2>

где E.E1 и E.E2 - произвольные объектные выражения.

ОПИСАНИЕ:

Функция lrel лексикографически сравнивает выражения E.E1 и E.E2.

В выраженииях E.E1 и E.E2 последовательно сравниваются термы нулевого уровня. Пусть на очередном шаге проверки W.W1 - терм выражения E.E1, W.W2 - терм выражения E.E2. Если W.W1 > W.W2, то E.E1 > E.E2. Если W.W1 < W.W2, то E.E1 < E.E2. Если W.W1 = W.W2, то происходит переход к следующим термам. Если в одном из выражений больше нет термов, то, если в другом выражении еще есть термы, то другое выражение больше, а если в обоих выражениях нет больше термов, то E.E1 = E.E2.

Правила сравнения двух термов:

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.r

где S.r - символ-литера:

ПРИМЕРЫ:

<lrel ('ab') 'ab'> --> '='
<lrel ('ac') 'ab'> --> '>'
<lrel ('abc') 'ab'> --> '>'
<lrel ('a' 0) 'ab'> --> '>'
<lrel ('ab') 'a' ()> --> '<'
<lrel ('a' ('a')) 'a' ('b')> --> '<'
<lrel ('a' ('b')) 'a' ('b')> --> '='

Функция m1

ВЫЗОВ:

<m1 N.n>

где N.n - макроцифра.

ОПИСАНИЕ:

Функция m1 производит вычитание единицы из макроцифры. Попытка вычесть единицу из макроцифры 0 приводит к авосту “Отождествление невозможно”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: макроцифра, на единицу меньшая N.n.

ПРИМЕРЫ:

<m1 10> --> 9
<m1 738> --> 737
<m1 1> --> 0

Функция Map

ВЫЗОВ:

<Map W.c E.e>

где W.c - терм, являющийся функцией, E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция высшего порядка, если E.e не пусто, последовательно применяет функцию W.c к текущему терму нулевого уровня выражения E.e, начиная с первого. Результат применения - произвольное объектное выражение E.ei, i=1…n (n - количество термов нулевого уровня выражения E.e). Результат функции - выражение E.e1…E.en.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где Er - выражение:

ПРИМЕРЫ:

<Map (&add (2))> -->
<Map (&add (2)) 0 1> --> 2 3
<Map &lengr (1 2) 'r'> --> 4 (1 2) 1 'r'

Функция Map_Accumulator

ВЫЗОВ:

<Map_Accumulator W.c W.a E.e>

где W.c - терм, являющийся функцией, W.a - терм, являющийся начальным значением аккумулятора, E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция высшего порядка является гибридом функций Map и FoldL. Она, если E.e не пусто, последовательно применяет функцию W.c к терму, являющимся текущим значением аккумулятора, начиная с начального, и к текущему терму нулевого уровня выражения E.e, начиная с первого. Результат этого применения - выражение W.wi E.ei, i=1…n (n - количество термов нулевого уровня выражения E.e), где W.wi - терм, который становится новым текущим значением аккумулятора, E.ei - произвольное объектное выражение. Результат функции - выражение W.wn E.e1…E.en.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.r

где V.r - выражение:

ПРИМЕРЫ:

поле памяти: Add1 (E.E1) (E.E2) = (<add (E.E1) E.E2>) (E.E1)
<Map_Accumulator &Add1 (1)> --> (1)

поле памяти: Add1 (E.E1) (E.E2) = (<add (E.E1) E.E2>) (E.E1)
<Map_Accumulator &Add1 (1) (2) (1 3)> --> (1 6) (1) (3)

Функция Max

ВЫЗОВ:

<Max V.e>

где V.e - непустое произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция вычисляет максимальный терм нулевого уровня выражения V.e. Термы выражения сравниваются между собой лексикографически.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: W.m

где W.m - терм:

ПРИМЕРЫ:

<Max () 9 'fg'> --> ()
<Max 9> --> 9

Функция Min

ВЫЗОВ:

<Min V.e>

где V.e - непустое произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция вычисляет минимальный терм нулевого уровня выражения V.e. Термы выражения сравниваются между собой лексикографически.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: W.m

где W.m - терм:

ПРИМЕРЫ:

<Min () 9 'fg'> --> 'f'
<Min 9> --> 9

Функция mul

ВЫЗОВ:

<mul (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

Функция mul умножает целые числа E.E1 и E.E2.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Целое число (произведение E.E1 и E.E2). Если результат положителен - знак ‘+’ не ставитcя. Нулевой результат выдается в виде макроцифры 0.

ПРИМЕРЫ:

<mul (2) '-' 2> --> '-' 4
<mul (2)> --> 0
<mul (65536) 65536> --> 1 0

Функция muln

ВЫЗОВ:

<muln (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Как в mul, только нулевой результат выдается в виде пустого выражения.

ПРИМЕР:

<muln () 3> -->

Функция multe

ВЫЗОВ:

<multe N.n E.e>

где N.n - макроцифра, а E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция копирует (размножает) выражение в заданном количестве экземпляров.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e E.e…E.e

где выражение E.e повторяется N.n раз. В частности, если N.n равно нулю, результатом замены является пустое выражение.

ПРИМЕРЫ:

<multe 5 'A'> --> 'AAAAA'
<multe 2 'A'('B')> --> 'A'('B')'A'('B')
<multe 0> -->

Функция nrel

ВЫЗОВ:

<nrel (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

Функция nrel предназначена для сравнения целых чисел с учетом знака.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.r (E.E1) E.E2

где S.r - символ-литера:

ПРИМЕРЫ:

<nrel (5) 3> --> '>' (5) 3
<nrel ('-' 5) '-' 3> --> '<' ('-' 5) '-' 3
<nrel () 0 0> --> '=' () 0 0

Функция numb

ВЫЗОВ:

<numb E.d>

где E.d - цепочка символов-литер, являющаяся десятичной записью целого числа со знаком или без него, или пустое выражение (воспринимается как нуль).

ОПИСАНИЕ:

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.n

где V.n - число E.d в виде макроцифры (возможно, со знаком). Если результат положителен - знак ‘+’ не ставитcя. Нулевой результат выдается в виде макроцифры 0.

ПРИМЕРЫ:

<numb '1000'> --> 1000
<numb '-4294967295'> --> '-' 4294967295
<numb > --> 0
<numb '1000000000'> --> 1000000000
<numb '+025'> --> 25

Функция ord

ВЫЗОВ:

<ord E.c>

где E.c - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция заменяет в выражении E.c все символы-литеры макроцифрами с соответствующим 8-битным кодом (от 0 до 255).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.n

где E.n - выражение E.c, в котором все символы-литеры заменены макроцифрами.

ПРИМЕР:

<ord '>' 567 (67) ('A')> --> 62 567 (67) (65)

Функция p1

ВЫЗОВ:

<p1 N.n>

где N.n - макроцифра.

ОПИСАНИЕ:

Функция p1 производит прибавление единицы к макроцифре. Попытка прибавить единицу к макроцифре 4294967295 приводит к авосту “Отождествление невозможно”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: макроцифра, на единицу большая N.n.

ПРИМЕРЫ:

<p1 10> --> 11
<p1 738> --> 739

Функция Path_Separator

ВЫЗОВ:

<Path_Separator>

ОПИСАНИЕ:

Функция Path_Separator возвращает символ разделения каталогов в переменной окружения PATH в текущей среде.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.p

где S.p - символ-литера:

ПРИМЕРЫ:

Среда Windows
<Path_Separator> --> ';'

Среда POSIX
<Path_Separator> --> ':'

Функция Platform

ВЫЗОВ:

<Platform>

ОПИСАНИЕ:

Функция Platform возвращает текущую среду Windows или POSIX.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.p

где S.p - символ-метка:

ПРИМЕРЫ:

Среда Windows
<Platform> --> &WINDOWS

Среда POSIX
<Platform> --> &POSIX

Функция print

ВЫЗОВ:

<print E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

В результате выполнения функции print в стандартный выходной поток (обычно это экран дисплея, но средствами операционной системы можно переназначить его в некоторый файл), выводится выражение E.e. Если выражение не помещается в одной печатной строке, оно продолжается на следующих строках. В конце происходит переход на новую строку. При использовании функции print выражение E.e выводится следующим образом. Символы-литеры (объектные знаки) выводятся в виде соответствующих литер. Структурные скобки “(“ и “)” выводятся в виде литер “(“ и “)”. Составные символы печатаются в том же виде, как они изображаются в РефалАБ-программах, за исключением того, что в качестве ограничителей для символов-ссылок и нестандартных символов используется не “/”, а апостроф “’”. Символы-числа обрамляются апострофами “’”. Символы-метки выводятся в виде имени символа-метки, обрамленного апострофами “’”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

ПРИМЕР:

<print 'function' (&f1)> --> 'function' (&F1)

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

function('F1')

Функция printm

ВЫЗОВ:

<printm E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Аналогична функции print. Только при использовании функции printm выражение выводится в том же виде, в котором оно записывается в исходных РефалАБ-программах. Единственное различие заключается в том, что при переходе на следующую строку не ставится признак продолжения “+”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

ПРИМЕР:

<printm 'function' (&f1)> --> 'function' (&F1)

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

'function'(&F1)

Функция prints

ВЫЗОВ:

<prints E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Аналогична функции print. Только при использовании функции prints символы выражения не обрамляются апострофами.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

ПРИМЕР:

<prints 'function' (&f1)> --> 'function' (&F1)

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

function(F1)

Функция prout

ВЫЗОВ:

<prout Ee>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Аналогична функции print.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕР:

<prout 'this' (&func)> -->

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

this('FUNC')

Функция proutm

ВЫЗОВ:

<proutm E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Аналогична функции printm.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕР:

<proutm 'this' (&func)> -->

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

'this'(&FUNC)

Функция prouts

ВЫЗОВ:

<prouts Ee>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Аналогична функции prints.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕР:

<prouts 'this' (&func)> -->

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

this(FUNC)

Функция QSort

ВЫЗОВ:

<QSort E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция производит быструю сортировку термов нулевого уровня выражения E.e. Термы выражения сравниваются между собой лексикографически.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.s

где E.s - выражение:

ПРИМЕРЫ:

<QSort > -->
<Max 9 ('hg') 1 &Print ('j') &QSort 'h' ()> --> 'h' &QSort &Print 1 9 () ('hg') ('j')
<QSort 9> --> 9

Функция random

ВЫЗОВ:

<random N.n>

где N.n - макроцифра.

ОПИСАНИЕ:

Функция random генерирует случайное количество (не более N.n) случайных макроцифр. Если N.n = 0, возникает авост “Отождествление невозможно”.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.r

нде V.r - непустая сгенерированная цепочка макроцифр.

ПРИМЕР:

<random 1> --> 5463
<random 3> --> 72341 14561212 345
<random 3> --> 912704

Функция random_number

ВЫЗОВ:

<random_number N.n>

где N.n - макроцифра.

ОПИСАНИЕ:

Функция random_number генерирует случайное число от 0 до N.n.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: N.r

где N.r - сгенерированное случайное число в виде макроцифры.

ПРИМЕР:

<random_number 0> --> 0
<random_number 2> --> 1
<random_number 2> --> 2
<random_number 2> --> 0

Функция remove_file

ВЫЗОВ:

<remove_file E.f>

где E.f - выражение из символов-литер, задаюшее имя файла (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX.

ОПИСАНИЕ:

Указанный файл удаляется.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение из символов-литер:

ПРИМЕРЫ:

<remove_file 'a.a'> -->
<remove_file 'd:\\test\\a.a'> -->
<remove_file 'test/a.a'> -->

Процесс удаления файла 'a.a' завершился с ошибкой 
<remove_file 'a.a'> --> 'описание кода ошибки'

ЗАМЕЧАНИЕ: обратный слэш изображается путем двукратного повторения.

Функция rename

ВЫЗОВ:

<rename V.f>

где V.f - непустое выражение из символов-литер и макроцифры 0, представляет собой два имени файлов или каталогов (возможно, с указанием пути), не превышающие 260 символов в среде Windows или 4096 символов в среде POSIX, разделенных макроцифрой 0.

ОПИСАНИЕ:

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение из символов-литер:

ПРИМЕРЫ:

<rename 'a.a' 0 'b.b'> -->
<rename 'c:\\a.a' 0 'd:\\a.a'> -->
<rename 'd:\\a\\a.a' 0 'c:\\f1\\f1.1\\c.c'> -->
<rename 'a/a.a' 0 'f1/f1.1/c.c'> -->

Процесс переименования файла 'a.a' в 'b.b' завершился с ошибкой 
<rename 'a.a' 0 'b.b'> --> 'описание кода ошибки'

ЗАМЕЧАНИЕ: обратный слэш изображается путем двукратного повторения.

Функция Save_FBytes

ВЫЗОВ:

<Save_FBytes S.n (E.f) E.b>

где S.n - номер файла (макроцифра от 0 до 9); E.f - выражение из символов-литер, представляющее собой имя файла (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX; E.b - выражение (может быть пустым), которое содержит только символы-литеры и макроцифры.

ОПИСАНИЕ:

Эта функция открывает файл на запись в бинарном режиме. Если файл существует, то файл будет перезаписан. Если файл не существует, то файл будет создан. Далее функция записывает в файл байты E.b. При этом все символы-литеры в выражении E.b преобразуются в ихние 8-битные коды от 0 до 255, а макроцифры в выражении E.b преобразуются по модулю 256 в числа от 0 до 255. В конце работы функция закрывает файл.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение:

ПРИМЕРЫ:

<Save_FBytes 3 ('input.bin') 'n' 89> -->
и в файл запишутся байты 110 и 89

Файл 'input.bin' не может быть открыт
<Save_FBytes 3 ('input.bin') 'n' 89> -->  'описание кода ошибки' &NULL

Функция Save_File

ВЫЗОВ:

<Save_File S.n (E.f) E.l>

где S.n - номер файла (макроцифра от 0 до 9); E.f - выражение из символов-литер, представляющее собой имя файла (возможно, с указанием пути), не превышающее 260 символов в среде Windows или 4096 символов в среде POSIX; E.l - выражение (может быть пустым) вида (E.l1)…(E.ln), E.l1…E.ln содержат только символы-литеры.

ОПИСАНИЕ:

Эта функция открывает файл на запись. Если файл существует, то файл будет перезаписан. Если файл не существует, то файл будет создан. Далее функция записывает в файл строки E.l1…E.ln. Если любое из этих выражений пусто, в файл добавляется пустая строка. Если E.l - пусто, то в файл ничего не записывается и он будет пустым. В конце работы функция закрывает файл.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

где E.e - выражение:

ПРИМЕРЫ:

<Save_File 3 ('input.txt') ('first string') ('second string')> -->
и в файл запишутся строки 'first string' и 'second string'

Файл 'input.txt' не может быть открыт
<Save_File 3 ('input.txt') ('first string') ('second string')> -->  'описание кода ошибки' &NULL

Функция Set

ВЫЗОВ:

<Set E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция формирует множество термов нулевого уровня выражения E.e. Т.е. это выражение E.e, но без повторяющихся термов нулевого уровня.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.s

где E.s - выражение E.e, но без повторяющихся термов нулевого уровня.

ПРИМЕРЫ:

<Set 'w' (0) 1> --> 'w' (0) 1
<Set 'w' (0) 1 (0)> --> 'w' (0) 1

Функция step

ВЫЗОВ:

<step >

ОПИСАНИЕ:

Функция возвращает количество завершенных шагов процесса. Точнее, значение поля step текущего процесса (п. 3.8, п. 3.11).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.n

где S.n - макроцифра.

ПРИМЕР:

<step > --> количество завершенных шагов процесса

Функция sub

ВЫЗОВ:

<sub (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

Функция sub предназначена для вычитания E.E2 из E.E1.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Результатом вызова функции sub является целое число (вычитание E.E2 из E.E1). Если результат положителен - знак ‘+’ не ставитcя. Нулевой результат выдается в виде макроцифры 0.

ПРИМЕРЫ:

<sub (1) 2> --> '-' 1
<sub (2) > --> 2
<sub (1 1) 2> --> 4294967295

Функция subn

ВЫЗОВ:

<subn (E.E1) E.E2>

где E.E1 и E.E2 - целые числа (может быть пустые).

ОПИСАНИЕ:

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Как в sub, только нулевой результат выдается в виде пустого выражения.

ПРИМЕР:

<subn (0) > -->

Функция symb

ВЫЗОВ:

<symb E.n>

где E.n - целое число в виде цепочки макроцифр (возможно, со знаком) (может быть пустое).

ОПИСАНИЕ:

Преобразует целое число, не превышающее по абсолютной величине 4294967295, в символьное представление.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.d

где V.d - цепочка символов-литер, являющаяся записью числа E.n в десятичной системе счисления. Если число E.n положительно - знак ‘+’ в E.d не ставитcя. Нулевой результат изображается как ‘0’.

ПРИМЕРЫ:

<symb 1000> --> '1000'
<symb '-' 4294967295> --> '-4294967295'
<symb > --> '0'
<symb 0> --> '0'
<symb 1000000000> --> '1000000000'
<symb '-' 0 25> --> '-25'

Функция system

ВЫЗОВ:

<system E.c>

где E.c - цепочка объектных символов, представляющая команду операционной системы, не превышающая 8191 символов.

ОПИСАНИЕ:

Функция system выполняет команду операционной системы E.c с помощью функции system() языка Си.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: V.n

где V.n - число в виде макроцифры (возможно, со знаком):

Если результат положителен - знак ‘+’ не ставитcя. Нулевой результат выдается в виде макроцифры 0.

ПРИМЕРЫ:

Среда Windows
<system > --> 0
<system 'l'> --> 1
<system 'pause'> --> 0

Среда POSIX
<system > --> 0
<system 'l'> --> 127
<system 'ls'> --> 0

Функция time

ВЫЗОВ:

<time>

ОПИСАНИЕ:

Функция time возвращает текущую дату и время в локали операционной системы.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Цепочка символов-литер, представляющая текущую дату и время в локали операционной системы. Пусто, если строка, представляющая текущую дату и время пустая или возникла ошибка при формировании строки. Символ-метка &NULL, если текущую дату и время в локали операционной системы невозможно определить.

ПРИМЕР:

<time> --> 'текущая дата и время в локали операционной системы'

Функция tm

ВЫЗОВ:

<tm S.t>

где S.t - символ-литера.

Если S.t - ‘S’ или ‘s’, секундомер запускается.

Если S.t - ‘G’ или ‘g’, функция возвращает текущее время секундомера.

ОПИСАНИЕ:

Функция tm при вызове запускает секундомер или возвращает текущее время секундомера. Если функция возвращает текущее время секундомера без предварительного запуска, то время запуска секундомера 00:00:00 UTC 1 января 1970 года.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Пусто, если секундомер запускается. Если функция возвращает текущее время секундомера, то цепочка символов-литер, представляющая текущее время секундомера.

ПРИМЕРЫ:

<tm 's'> -->
<tm 'g'> --> '00:00:00.000000100'

Функция tm_elapsed

ВЫЗОВ:

<tm_elapsed>

ОПИСАНИЕ:

Функция tm_elapsed возвращает текущее время работы интерпретатора языка сборки.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

Пусто, если время работы интерпретатора языка сборки не измеряется. Если данное время измеряется, то цепочка символов-литер, представляющая текущее время работы интерпретатора.

ПРИМЕРЫ:

<tm_elapsed> -->
<tm_elapsed> --> '00:00:00.0000022100'

Функция Trim

ВЫЗОВ:

<Trim E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция Trim возвращает выражение E.e, но без пробелов в начале и в конце этого выражения. Пробелы - это ‘ ‘, ‘\n’, ‘\t’, ‘\v’, ‘\f’, ‘\r’.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение E.e без пробелов в начале и в конце.

ПРИМЕРЫ:

<Trim 'A'0' d'> --> 'A'0' d'
<Trim '\n A'0' d\t'> --> 'A'0' d'

Функция TrimL

ВЫЗОВ:

<TrimL E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция Trim возвращает выражение E.e, но без пробелов в начале этого выражения. Пробелы - это ‘ ‘, ‘\n’, ‘\t’, ‘\v’, ‘\f’, ‘\r’.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение E.e без пробелов в начале.

ПРИМЕРЫ:

<TrimL 'A'0' d'> --> 'A'0' d'
<TrimL '\n A'0' d'> --> 'A'0' d'

Функция TrimR

ВЫЗОВ:

<TrimR E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция TrimR возвращает выражение E.e, но без пробелов в конце этого выражения. Пробелы - это ‘ ‘, ‘\n’, ‘\t’, ‘\v’, ‘\f’, ‘\r’.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.r

где E.r - выражение E.e без пробелов в конце.

ПРИМЕРЫ:

<TrimR 'A'0' d'> --> 'A'0' d'
<TrimR 'A'0' d\t'> --> 'A'0' d'

Функция try

ВЫЗОВ:

<try E.E1>

где E.E1 - произвольное объектное выражение.

ОПИСАНИЕ:

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

< E.E1>

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

В случае нормального останова результатом замены будет выражение

'N' E.E2

где E.E2 - результат вычисления терма < E.E1>.

В случае останова “Отождествление невозможно” результатом замены будет выражение

'R' E.E3

где E.E3 - содержимое того функционального терма < E.E3>, попытка вычисления которого привела к останову.

В случае останова “Свободная память исчерпана” результатом замены будет выражение

'S'

ПРИМЕР:

поле памяти: rev s.s1 s.s2 = s.s2 s.s1
<try &rev 'ab'> --> 'N' 'ba'
<try &rev 'abc'> --> 'R' &rev 'abc'

Функция Type

ВЫЗОВ:

<Type E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция Type предназначена для распознавания типа выражения E.e. Тип выражения зависит от терма, с которого начинается выражение E.e. Типы выражения могут быть:

Если выражениие E.e начинается с символа-литеры, то выражение также может иметь один из двух подтипов:

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: S.t E.s E.e

где S.t - символ-метка, определяющая тип выражения E.e;

E.s - символ-метка (может отсутствовать), определяющая подтип выражения, если тип выражения Char.

S.t = &Void, если тип выражения - Void.

S.t = &Label, если тип выражения - Label.

S.t = &Number, если тип выражения - Number.

S.t = &Reference, если тип выражения - Reference.

S.t = &Char, если тип выражения - Char.

S.t = &Brackets, если тип выражения - Brackets.

S.t = &OtherT, если тип выражения - OtherT.

E.s = &Latin, если подтип выражения - Latin.

E.s = &Digit, если подтип выражения - Digit.

ПРИМЕРЫ:

<Type > --> &Void
<Type 9> --> &Number 9
<Type 'G'> --> &Char &Latin 'G'
<Type '9'> --> &Char &Digit '9'
<Type '='> --> &Char '='
<Type &Type> --> &Label &Type
<Type ()> --> &Brackets ()

Функция upper

ВЫЗОВ:

<upper E.c>

где E.c - произвольное объектное выражение.

ОПИСАНИЕ:

Эта функция заменяет в выражении E.c все строчные латинские символы-литеры заглавными символами-литерами.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.N

где E.N - выражение E.c, в котором все строчные латинские символы-литеры заменены заглавными символами-литерами.

ПРИМЕР:

<upper '>' 0 ('j') ('A')> --> '>' 0 ('J') ('A')

Функция write

ВЫЗОВ:

<write E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция аналогична print. Только в конце не происходит переход на новую строку.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

ПРИМЕР:

<write 'function'(&f1)> --> 'function'(&F1)

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

function('F1')

Функция writem

ВЫЗОВ:

<writem E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция аналогична printm. Только в конце не происходит переход на новую строку.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

ПРИМЕР:

<writem 'function'(&f1)> --> 'function'(&F1)

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

'function'(&F1)

Функция writes

ВЫЗОВ:

<writes E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция аналогична prints. Только в конце не происходит переход на новую строку.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: E.e

ПРИМЕР:

<writes 'function' (&f1)> --> 'function' (&F1)

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

function(F1)

Функция wrout

ВЫЗОВ:

<wrout Ee>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция аналогична prout. Только в конце не происходит переход на новую строку.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕР:

<wrout 'this'(&func)> -->

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

this('FUNC')

Функция wroutm

ВЫЗОВ:

<wroutm E.e>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция аналогична proutm. Только в конце не происходит переход на новую строку.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕР:

<wroutm 'this'(&func)> -->

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

'this'(&FUNC)

Функция wrouts

ВЫЗОВ:

<wrouts Ee>

где E.e - произвольное объектное выражение.

ОПИСАНИЕ:

Функция аналогична prouts. Только в конце не происходит переход на новую строку.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: пусто

ПРИМЕР:

<wrouts 'this' (&func)> -->

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

this(FUNC)

2.17. Описание пустых функций

Здесь представлены описания пустых функций, расположенных в алфавитном порядке. Для каждой пустой функции приводится символ-метка, описание и пример.

Пустая функция Begin

СИМВОЛ-МЕТКА:

&BEGIN

ОПИСАНИЕ:

Является символом-меткой, представляющим начало чего-то, например начало файла.

ПРИМЕР:

<fseek 3 5 &Begin> -->

Пустая функция Brackets

СИМВОЛ-МЕТКА:

&BRACKETS

ОПИСАНИЕ:

Является символом-меткой, представляющим тип выражения - Brackets.

ПРИМЕР:

поле памяти:
Ex &Brackets E._ = &True
    E._ = &False
<Ex <Type ()>> --> &True
<Ex <Type 9>> --> &False

Пустая функция Char

СИМВОЛ-МЕТКА:

&CHAR

ОПИСАНИЕ:

Является символом-меткой, представляющим тип выражения - Char.

ПРИМЕР:

поле памяти:
Ex &Char E._ = &True
    E._ = &False
<Ex <Type '9'>> --> &True
<Ex <Type 9>> --> &False

Пустая функция Cur

СИМВОЛ-МЕТКА:

&CUR

ОПИСАНИЕ:

Является символом-меткой, представляющим текущую позицию чего-то, например текущую позицию файла.

ПРИМЕР:

<fseek 3 5 &Cur> -->

Пустая функция Digit

СИМВОЛ-МЕТКА:

&DIGIT

ОПИСАНИЕ:

Является символом-меткой, представляющим подтип выражения - Digit.

ПРИМЕР:

поле памяти:
Ex E._ &Digit E.__ = &True
    E._ = &False
<Ex <Type '9'>> --> &True
<Ex <Type 'a'>> --> &False

Пустая функция End

СИМВОЛ-МЕТКА:

&END

ОПИСАНИЕ:

Является символом-меткой, представляющим конец чего-то, например конец файла.

ПРИМЕР:

<fseek 3 '-' 5 &End> -->

Пустая функция False

СИМВОЛ-МЕТКА:

&FALSE

ОПИСАНИЕ:

Является символом-меткой, представляющим логическую ложь.

ПРИМЕР:

поле памяти:
Ex &False/ = 'False'
    S._ = 'Not False'
<Ex &False> --> 'False'
<Ex 'f'> --> 'Not False'

Пустая функция feof

СИМВОЛ-МЕТКА:

&FEOF

ОПИСАНИЕ:

Является символом-меткой, представляющим конец файла.

ПРИМЕР:

поле памяти:
Ex E._ &FEOF = &True
    E._ = &False
<FOpen 'r' 0 'a.a'> -->
<Ex <FGetS 0>> --> &False
<Ex <FGetS 0>> --> &True

Пустая функция ferror

СИМВОЛ-МЕТКА:

&FERROR

ОПИСАНИЕ:

Является символом-меткой, представляющим ошибки в файле.

ПРИМЕР:

поле памяти:
Ex E._ &FError = &True
    E._ = &False
<FOpen 'r' 0 'a.a'> -->
<Ex <FGetS 0>> --> &False
<Ex <FPutS 0>> --> &True

Пустая функция Label

СИМВОЛ-МЕТКА:

&LABEL

ОПИСАНИЕ:

Является символом-меткой, представляющим тип выражения - Label.

ПРИМЕР:

поле памяти:
Ex &Label E._ = &True
    E._ = &False
<Ex <Type &Type>> --> &True
<Ex <Type 9>> --> &False

Пустая функция Latin

СИМВОЛ-МЕТКА:

&LATIN

ОПИСАНИЕ:

Является символом-меткой, представляющим подтип выражения - Latin.

ПРИМЕР:

поле памяти:
Ex E._ &Latin E.__ = &True
    E._ = &False
<Ex <Type 'a'>> --> &True
<Ex <Type '9'>> --> &False

Пустая функция NULL

СИМВОЛ-МЕТКА:

&NULL

ОПИСАНИЕ:

Является символом-меткой, представляющим невалидный объект.

ПРИМЕР:

поле памяти:
Ex &NULL = &True
    E._ = &False
<FOpen 'r' 0 'a.a'> -->
<Ex <FClose 0>> --> &False
<Ex <FClose 0>> --> &True

Пустая функция Number

СИМВОЛ-МЕТКА:

&NUMBER

ОПИСАНИЕ:

Является символом-меткой, представляющим тип выражения - Number.

ПРИМЕР:

поле памяти:
Ex &Number E._ = &True
    E._ = &False
<Ex <Type '9'>> --> &False
<Ex <Type 9>> --> &True

Пустая функция OtherT

СИМВОЛ-МЕТКА:

&OTHERT

ОПИСАНИЕ:

Является символом-меткой, представляющим тип выражения - OtherT.

ПРИМЕР:

поле памяти:
Ex &OtherT E._ = &True
    E._ = &False
<Ex <Type '9'>> --> &False
<Ex &OtherT> --> &True

Пустая функция POSIX

СИМВОЛ-МЕТКА:

&POSIX

ОПИСАНИЕ:

Функция Platform возвращает эту функцию в среде POSIX, применяется совместно с Platform и пустой функцией Windows для написания программ, по разному ведущих себя в средах Windows и POSIX.

ПРИМЕР:

Среда POSIX
поле памяти:
Ex &Windows = 'It is Windows'
    &POSIX = 'It is POSIX'
<Ex <Platform>> --> 'It is POSIX'

Пустая функция Reference

СИМВОЛ-МЕТКА:

&REFERENCE

ОПИСАНИЕ:

Является символом-меткой, представляющим тип выражения - Reference.

ПРИМЕР:

поле памяти:
Ex &Reference E._ = &True
    E._ = &False
<Ex <Type <New>>> --> &True
<Ex <Type 9>> --> &False

Пустая функция stderr

СИМВОЛ-МЕТКА:

&STDERR

ОПИСАНИЕ:

Является символом-меткой, представляющим стандартный поток вывода ошибки.

ПРИМЕР:

<FPutS &StdErr 'string'> -->

и на экране появится:

string

Пустая функция stdin

СИМВОЛ-МЕТКА:

&STDIN

ОПИСАНИЕ:

Является символом-меткой, представляющим стандартный входной поток.

ПРИМЕР:

<FGetS &StdIn> --> 'эта строка введена с клавиатуры'

Пустая функция stdout

СИМВОЛ-МЕТКА:

&STDOUT

ОПИСАНИЕ:

Является символом-меткой, представляющим стандартный выходной поток.

ПРИМЕР:

<FPutS &StdOut 'string'> -->

и на экране (если вывод не переназначен в какой-либо другой файл при запуске данной программы) появится:

string

Пустая функция True

СИМВОЛ-МЕТКА:

&TRUE

ОПИСАНИЕ:

Является символом-меткой, представляющим логическую истину.

ПРИМЕР:

поле памяти:
Ex &True = 'True'
    S._ = 'Not True'
<Ex &True> --> 'True'
<Ex 'f'> --> 'Not True'

Пустая функция Void

СИМВОЛ-МЕТКА:

&VOID

ОПИСАНИЕ:

Является символом-меткой, представляющим тип выражения - Void.

ПРИМЕР:

поле памяти:
Ex &Void = &True
    E._ = &False
<Ex <Type >> --> &True
<Ex <Type 9>> --> &False

Пустая функция Windows

СИМВОЛ-МЕТКА:

&WINDOWS

ОПИСАНИЕ:

Функция Platform возвращает эту функцию в среде Windows, применяется совместно с Platform и пустой функцией POSIX для написания программ, по разному ведущих себя в средах Windows и POSIX.

ПРИМЕР:

Среда Windows
поле памяти:
Ex &Windows = 'It is Windows'
    &POSIX = 'It is POSIX'
<Ex <Platform>> --> 'It is Windows'

2.18. Описание спецификаторов

Здесь представлены описания спецификаторов, расположенных в алфавитном порядке. Для каждого спецификатора приводится имя, описание и пример.

Спецификатор Directory_Separators

ИМЯ:

:Directory_Separators:

ОПИСАНИЕ:

Спецификатор Directory_Separators определяет множество символов для разделения уровней папок в строке пути в текущей среде. Символы для разделения уровней папок в строке пути:

ПРИМЕРЫ:

Среда Windows
поле памяти:
Is_Directory_Separator S(:Directory_Separators:)._ = &True
    S._ = &False
<Is_Directory_Separator '\\'> --> &TRUE
<Is_Directory_Separator '/'> --> &TRUE
<Is_Directory_Separator ';'> --> &FALSE

Среда POSIX
поле памяти:
Is_Directory_Separator S(:Directory_Separators:)._ = &True
    S._ = &False
<Is_Directory_Separator '/'> --> &TRUE
<Is_Directory_Separator '\\'> --> &FALSE

ЗАМЕЧАНИЕ: обратный слэш изображается путем двукратного повторения.

Спецификатор EOF

ИМЯ:

:EOF:

ОПИСАНИЕ:

Спецификатор EOF определяет символы EOF - символы-метки &FEOF (конец файла) и &FError (ошибки в файле).

ПРИМЕР:

поле памяти:
IsEOF S(:EOF:)._ = &True
    S._ = &False
<IsEOF &FEOF> --> &TRUE
<IsEOF &FError> --> &TRUE
<IsFEOF 'r'> --> &FALSE

Спецификатор Max_Number

ИМЯ:

:Max_Number:

ОПИСАНИЕ:

Спецификатор Max_Number определяет максимальное значение макроцифры 4294967295.

ПРИМЕР:

поле памяти:
Is_Max_Number S(:Max_Number:)._ = &True
    S._ = &False
<Is_Max_Number 4294967295> --> &TRUE
<Is_Max_Number 7> --> &FALSE

Спецификатор Max_PathFileName

ИМЯ:

:Max_PathFileName:

ОПИСАНИЕ:

Спецификатор Max_PathFileName определяет максимальную длину имени файла (возможно, с указанием пути) в текущей среде. Максимальная длина имени файла:

ПРИМЕРЫ:

Среда Windows
поле памяти:
Is_Max_PathFileName S(:Max_PathFileName:)._ = &True
    S._ = &False
<Is_Max_PathFileName 260> --> &TRUE
<Is_Max_PathFileName 4096> --> &FALSE

Среда POSIX
поле памяти:
Is_Max_PathFileName S(:Max_PathFileName:)._ = &True
    S._ = &False
<Is_Max_PathFileName 4096> --> &TRUE
<Is_Max_PathFileName 260> --> &FALSE

Спецификатор Numbers_Files

ИМЯ:

:Numbers_Files:

ОПИСАНИЕ:

Спецификатор Numbers_Files определяет номера файлов от 0 до 9.

ПРИМЕР:

поле памяти:
Is_Numbers_Files S(:Numbers_Files:)._ = &True
    S._ = &False
<Is_Numbers_Files 0> --> &TRUE
<Is_Numbers_Files 10> --> &FALSE

Спецификатор White_Spaces

ИМЯ:

:White_Spaces:

ОПИСАНИЕ:

Спецификатор White_Spaces определяет множество пробелов. Пробелы - это ‘ ‘, ‘\n’, ‘\t’, ‘\v’, ‘\f’, ‘\r’.

ПРИМЕР:

поле памяти:
Is_White_Space S(:White_Spaces:)._ = &True
    S._ = &False
<Is_White_Space '\t'> --> &TRUE
<Is_White_Space 'r'> --> &FALSE