Uploaded by bp-m90

Язык refal

advertisement
Ордена
Ленина
ИНСТИТУТ ПРИКЛАДНОЙ МАТЕМАТИКИ
имени М.В. Кеп.аь1ша
Академии
А.В. Климов
,
наук
СССР
С.А. Романенко
СИСТЕМА ПРОГРАММИРОВАНИЯ РЕФА~2 ДЛЯ
ЕС ЭВМ
ОПИСАНИЕ БИБЛИОТЕКИ ФУНКUИЙ
Преnринт
Москва
N!> 200
за
1986г.
Ордена
Ленина
ИНСТИТУТ ПРИКЛАдНОЙ МАТЕМАТИЮI
им. 'М.в. RвJUUUa
Академии Наук С<Х:Р
Анд.В.Клвмов,
СИСТЕЪ!А
С.А.Романенко
IIPOI'P АhUИРОВАНИЯ
РЕФАЛ-2 ДЛЯ ЕХ: ЭВМ.
ОПИСАНИЕ БИЕ/IИОТЕКИ ФУнкциИ.
Москва
1006
УдК
681 о з. Об
Описана
библиотека
программиро:вания
t аJ[Г()ритмичесюПt
обработки
функций,
рефап-2
поставляемая
для
ЕС
язык рекурсивных функций)
информации,
представленной
древовидкую
структуру.
по.цстановка
:в:вода-:выво~
арИJiиетичес:юtt
операций над
в
виде
Основными
явжяются соnоставление с
и рекурсия.
теиС'rов
рефал
предназначен для
имею~~~их
изобразительными средствами рефала
Ф3ющии
системой
Язык
символьной
выражений,
образцом,
с
Эlll.
Библиотека
:в
содержит
ПОQJiе,цо:вате.п.ЕВе
целш.m ЧИСJJаМИ
~.
неоrраничешюй
разряд:нОО'l'И И р1Щ .цруrих фушщd.
КЛЮЧЕВЫЕ
СЛОВА
информации,
И
ФРАЗ:.!:
рефал,
функциональное
программирования,
обработка
симюльной
программирование,
язык
библиотека подпрограмм.
СОДЕРЖАНИЕ
Введение
1 • Функция
2. Функции
• • о
CARD
печати
э
о
•
, •
з. ФУнкции арифметики
4.
5.
6.
7о
•
Функции лексического
анализа
Функции
•
и
PI
М!
•
"
о
о
APPL У
В. Функции для работы с символами-метками
9.
4
• 5
6
о
Функции для работы с символьными файлами о
Функция
о
• • •
о
•
о
14
20
о • 21
•• 25
•
• 26
Ф~ции для работы с лексикографически упорядоченными
множествами выражений
Благодарность
Литература
•
о
•
•
29
•
о
.26
35
• • • • • • •
о
•
о
•
о
•
•
о
Алфавитный указатель функций
о
о
•
:J1
3
ВВЕ!I.ЕНИЕ
В состав
функций,
в
системы программирования
реф8..11-2 вх:одит
на6ор
которые могут Онть испо.11ьзованы в рефа.Jr-программах
качестве
внешних
и
хранятся
в
ОиОJ!иотеке
оО' ектнЬJХ
модулей, поставляемЬJХ с рефал-системой,
ЧтоОы
использовать люОую
написанной
на рефале,
из этих
функций в
достаточно
оо'явить
соответствующем модуле с помощью директивы
Часть
ОиОлиотечнwх функций
скомпилирована в
КОМПИJ!Ятора.
ИJIИ
PL/1
п
е
р
С
в и
написана на
модуJIИ
Ост.альны~ функции
на
ч
оО'ектные
н
языке
ы м
с
nрограмме,
ее внешней
EXТRN
в
•
peф8Jie и
помощью
затем
рефал­
запрограммированы на языке
ассемО.11ера.
Эти
функции
именуются
и.
точки зрения
польэовате.11я рефал-системы
единственное
от.11ичие первичных функций от "о::Sычнwх" функций, описанных на
рефале,
состоит в том,
что
оОращения к первичным функцИJIМ
всегда поJПiост:ью :ВЫЧИCJI.IIIITCЯ за
если
при
этом
посJiедователъность
ВШIОJПiении этих
один шаг реф8..11-машины lдаже
совершается
действий)
,
дJIИиная
а
такzе в
оОращений может возНIDtать
и
том,
СJ!оzная
что
при
поОочннl эф~Jект,
т,е, взаимодействие со средой, внешней по отношению х реф8JI­
машине. В частности,
с помощ:ью первичных функций реализ:уются
операции ввода/вывода.
4
I. ФУНКЦИЯ
CAiD
Первичная функция
дает возможность
CAiD
из входного фай.11а с О~именем
Фай.11
доDен
SYSIN
Fll.EDEF
tдц
бЫ'l'ь описан
СМS ИJIИ IЩО)
с
JIИ6o с
,
читать записи
SYSIN.
помощЫJ
пред.11ожения
ПОМОЩЫJ D~пред.11ожения
tдц ОS/Э60 :и.IIИ ОС ЕС).
Записи
в
фай.11е
переменной д.ч:инн,
менее
80
SYSIN
доDtНн
.IIИТер допожняются до
Обращение к
бнть
дJIИНой не более
CARD
80
80
..rep
фиксированной
.11итер.
ИJIИ
Записи д.11иной
пробе.11ами справа.
имеет следующий вид:
<:CAiD>
и внпоJIНЯется следующим образом.
EcJIИ файл
SYSIN еще не открЬl'l' - он открнвается.
EcJIИ файл
SVSIN
функции
CAiD
пустое
до кщща,
ра6ота
а результатом замени является
внрааение.
Если
очереди~
первые
пуст иu уае прочитан
заJtанч:ивается,
файл
еще
запись
не
и
дочитан
ВНдаеТ в
до
конца,
качестве
C.AR.D
результата
читает
эаменн
80 литер этой записи.
Например,
информацию из
следуЮЩая
SYSIN
функция
CARDS
читав т
всю вход~
де конца и оставляет ее в по.11е зрения.
5
= <CARDS1
CARDS
CARDS1
2.
<CARD>>
VX = ( VX) <CARDS1 <CARD >>
ФУНКЦИИ ПЕЧАТИ
Для
nечати
результатов
PROUT
nервичные функции
и
счета,
можно
PRINT •
исnользовать
Обращение к ним имеет
следующий вид:
[Е) ">
<PROLfТC (Е] >
<PROUТ (Е]">
<PRINTM (Е]
<PROUTM
>
<PRINTC [EJ ">
<PRINT [Е] "?
где [Е]
В
-
nроизвольное об' ектное выражение.
результате вычисления
этих термов,
!;YSPRINT, начиная с новой строки,
Если выражение не
nродолжается
на
в выходной
файл
выводится выражение (Е].
помещается в одной nечатной
следующих строках.
Печать
строке,
оно
пустого
[Е]
вызывает проnуск одной печатной строки.
Длина строки устанавливается nри
с nомощью опции
C1NES1ZE
Если фа.Ил открывается неявно,
длина строки равная
120
При использовании
выводится
в том
же
SYSPRINT
120 литер.
автоматически устанавливается
P&INTM
функций
виде,
рефал-программах.
заключается
в
что
менее
литерам.
исходных
том,
открытии файла
и должна быть не
nри
в
и
котором
PROUTM
оно
Единственное
nереходе
выражение
записывается
на следующую
в
различие
заnись
не
6
"+".
ставится nризнак nродолжения
PRINTC
ФующЮI
PRINTM
и
PiOUТM
и
,
PROUТC
за
работают
исключением
обрамляют тела составных символов знаками
При использовании функций
вЫБодится
сJiедующим
и
PRINT
образом.
так
того,
скоски
.. t"
выводятся в виде литер
'')"
в том же
рефал-nрограммах,
за
виде,
Результатом вызова функции
является
PRINTM ,
3.
пустое
и
"t"
как они
исключением того,
ограничителей используется не
выражение.
и
не
выражение (Е]
PROUT
t об' ектные
СИ!\IВОлы-литеры
выводятся в виде соответствующих литер.
и
как
они
''/ ".
знаки)
символы nечатаются
же
что
Структурные
')" •
Составные
И2<'!~ражаются
что
в
в
качестве
"; ", а апостроф" 1 " .
PROUТM
,
PROUТC
Результатом
PROUT
или
вызова
функции
PRINTC или PRINT является выражение [Е].
ФУНКЦИИ АРИФМЕI'ИКИ
В
этом
разделе
оnисаны функции
для
работы
с
цель~и
числами произвольной разрядности.
Для того,
раэряАНости,
чтобы работать с целыми числами неограяиченной
прежде всего чеобходимо
об'ектных выражений.
используют
Целое
следующее
число
символов-чисел
символ-литера
представление
изображается
tмакроцифр),
1+1
или
подразумевается знак
представить их в виде
Все функции, оnисанные в этом разделе,
'-'.
1+ 1 •
чисел.
в
nеред
виде
nоследовательности
которой
может
стоять
EcJiИ знак числа отсутствует,
то
?
Примеры целых чисел:
/1?/ /242/ /1503/ /5/
/f.?/ /242/ /1503/ /5/
1+ 1
,_, /2/
/0/
,_, /3/ /20'&5/
Такое представление числа является
системе счисления
24).
по основанию
Таким оОразом,
записью в nозиционной
2••24=1677?2{6 t2
в степени
три символа
,_, /3/ /2035/
изоОрааают число
-t 3 * 2.. 24 + 2035)
ОсоОнА
вопрос
nредставлен
макроцифрн,
Все
лиОО
функции,
оnисанные в
nустого
воспринимают его
вwtают нулевой
-
Функции
ADD ,
nустого
ADD
SUВ
вычитания,
< (F]
данном
выражения
как нуль.
в
только
Онть
нулевне
допускают
аргумента
и
некоторые функции
виде макроц~рн
/0/,
а
выражения.
MUL ,
,
разделе,
качестве
При этом,
MUL
умножения,
нацело соответственно.
где [F]
Нуль может
содераащим
результат раООтн в
в виде
Ф у н к ц и и
сложения.
представпение нуля.
выражением,
лиОо пустым выражением.
использование
некоторые
-
= 50333683
SUВ
и
, DR , DIV •
DR
деления
служат для выполнения
с остатком и деле!!и.я
ООращение к ним имеет следующий вид:
t (N1] ) (N2J
>
- имя функции, а [N1j
и (N2]
- целые числа tмоает
8
быть
-
пустые).
ADD ,
Ре зуJ!ьтатом вызова функций
целое
чис.11о.
Ес.11и
резу.11ьтат
,
SLIВ
ПOJIOZИTeJieн
МJL
-
знак
является
1+ 1
не
ставится. Нулевой результат выдается в виде одной макроцифры
Например:
/0/ •
<ADD
<ADD
~/1/)
.............
/2/>
......
) /2/>
~
<SUВ ~/1/)
/2/>
/2/>
<Mt.t. ~/2/) 1- 1/2/>
<Mt.t. t/2/)>
<SUВ ~/2/)
~
Испо.11ьзуя эти функции можно,
РАС
,
/З/
/2/
1_1/l/
/0/
'-'14/
/0/
например,
описать функцию
вычисJ!ЯЮщую факториал неотрицатвлъиого це.11ого чис.11а.
ЕА =
FAC
FACI
~ЕА)
<FACI
/i/>
~/0/) ЕВ = ЕВ
(ЕА) ЕВ =
DR
Функция
t<SUВ ~ЕА)/1/>) .(МЦ. (ЕА)ЕВ>>
<P.ACi
вwцает резу.11ьтат в виде
[Q} t [R] )
где [Q] - частное от деления (Ni] на [N2] , а ~R] - остаток.
И частное,
знака
и остаток выдаются без незначsцих ну.11ей и без
Нулевые
1+ 1 •
и
[Q]
[R]
ВЫдаЮтся в виде макроцифрн
/0/.
Попнтка дe.IJI'l'ь на но.11ь
приводrr к авосту "отохдестВJiеиие
невозмоано' •
Эн81U1
ЧИСе.l
учитНВ81>ТСЯ
произВОД81 дежевие,
часrному
и
не
оствrку
CJieдJIIЩJIU
o<Sp81118J1
ВR818НJIJf
nриписнваем
ООравом:
на зваки,
такие
знаки,
CHaЧ&Jia
а звrем
чтобн
9
выполнялось
соотношение:
[Ni] = (~ * [N2) + (&]
Т.е.
частнее положительно,
совпадают,
нуто
если
знаки делимого и делителя
и отрицательно в противном
остаток
всех·да имеет
случае,
а не равный
знак далимого.
Например:
<DR.
<DR
<DR.
c::.DR
Функция
t/5/) /3/>
t/5/) '-' /3/>
t 1- 1 /5/) /3/>
t
1- 1
DIV
/'I./ i./2/)
'-'Н./ t/2/J
1- 1 /'I./ t'-'/2/)
/1/ t'-'12/)
~
~
~
~
/5/) '-' /3/>
выдает результат в виде
[Q]
где [Q] - частное от деления
на
[N1]
[N2]
какое подучается при обращении к функции
<DIV
<DIV
<.DIV
<DIV
t/5/) /З/>
t/5/) 1- 1/3/>
t 1- 1 /5/) /3/>
t 1 - 1 /5/) 1- 1 /3/>
ADDN
Функции
В
некоторых
макроцифрой
случаях
/0/ ,
SUВN
~
/'1/
~
'-'/!/
'-'/!/
....
-
/!/
, MULN ,
удоОно
, точно такое же,
DR. • Например:
DRN ,
представпять
а пустым выражением.
только
,
DRN •
тем,
Они от;:ичаются от
что
пустого выражения.
всегда ВЫд810Т
ADD ,
нулевой
Например:
<MLLN t) /3/>
-+-
[пусто]
нуль
не
Для раОоты с таким
представлением чисел предоставляются функции
МЦ..N
DIVN •
SUВ
ADDN ,
, MUi..
результат в
SUВN
и
,
DR
виде
!{)
<SUВN
l/0/)>
-..
[пусто]
<DRN (/{0/) /5/>
...
/22/ ()
<DRN l) /3/>
<DIVN l) /3/>
~
Ф у н к ц и я
ФуНКцИЯ
GCD
--
()
[пусто]
GCO •
предназначена
для вычисления
наибольшего
общеего делителя двух целых чисел о Формат обращения:
<GCD ( (Nf) ) [N2] >
где [Nl] и [N2]
- целые числа (которые могут быть пустыми).
Результат замены имеет вид:
[N]
где
{N]
-
положительное
целое
наибольшим оОО!им делителем чисел
число.
которое
[NI] и [N2] о
является
Наnример:
/Э/
<GCD (/6/) /I5/>
.....
<GCD ( 1- 1 /6/) /{5/>
<GCD t/!5/) /!/>
<GCD (/!5/) /0/>
<GCD t/f5/)>
/3/
_.. /I/
~
.... /15/
~ /15/
Наиоольwи.И общий делитель не мажет быть нулем, поэтому не
возникло необходимости иметь еще и функцию
Если
и
и
[N!] ,
[N2]
равны
ну1111,
GCI)Ч
•
возникает
авост
"ото.ждаствление невозможно''.
Исnользуя функцию
О&
,
можно бЫJ\О бы описать
рефале следующим образом:
GCO
(Е{) ЕА
l/0/) =Е!
tE!) ЕА (Е2)
= <.GCD
(Е2)
<.D.R. (Е!) Е2>>
GCD
на
II
NREL •
Ф у н к ц и я
NREL
Функция
предназначена для сравнения
целых чисел.
Формат обращения:
где
~NiEL t
(N!] ) (N2)
и
-
[NI]
Результат
[N2]
>
целые
числа или
пустнв
ВЬiра&ения.
замены имеет вид:
(zj t [NIJ ) (N2)
где
символ-литера. При этом
[z] -
1,..
Если
[N!) > (N2) •
то
fl]
Если
(N!]
= (N2) •
то
[z] = 1=1
то
[z] = 1< 1 о
Если [Nf]
<
(N2] •
Числа [Nf] и [N2]
сравн.иввются
целые с учетом знака.
R8lt
При этом пустое выражение воспринимается K81t нуль. Например:
<N:Ш...
t/5/)
<NREL
t 1-'/5/) '-'IW>
<NiEL t)
Функции
NLttffi ,
IЗI>
/0//Q/>
SУМВ
•
CVB
1
~
1 =1
и
перевода чисел из десятичной системы
2••24
CVD
t)
8 - 1 /З/
/0//0/
примеюштсв для
в систему по основанию
и обратно.
Ф у н к ц и Я
Для
перевода
ве.mчине
систему
NUМВ
>1 t/5/) /З/
-
.... '<' ( 1- 1 /5/)
•
NLМВ
чисел,
•
не
превосходящих
по
абсолютной
2**31-I = 2147483647. из десятичной системы в
по основааио 2••24 используется перэичная функция
Обращение к неИ имеет следуюЩИЙ вид:
12
<NUМВ [D]>
где [о]
-
цепочка символов-литер,
записw целого
в~~~раzение.
ОСНОВВ!IВЮ
чис.11а со
знаком ми
-
Результат зшенн
Пустое
2**24.
то
или пустое
ае число
/0/ •
Нулевой резу.11ьтат изобрваается как
(NUМВ>
десятичнои
без него,
~
,_,
~
--
Функция
SУМВ.
как
по
нуль.
Например:
/1000/
/1/ /0/
/0/
~
<NLМВ 1 1000000000 1>
<.NUМВ 1 +025 1:>
в системе
воспринимаетсн
[D]
<NlftiВ 1 1000 1">
<NUМВ 1-i6777216'>
являющмсн
/59/ /10144256/
/25/
для перевода чисе.11, не преВi1ШаJЩИХ: по абсоJIЮтной величине
2**3!-1
= 2147483647,
из
системы
по основанll)
деснтичиую систему испо.11ьэуетс.я функция
SУМВ
•
2**24
в
Обращение к
ней имеет СJiедуi)ЩИЙ вид:
<SYNВ [NJ>
где
це.11ое чис.11о в системе по основанию 2**24 tкоторое
[NJ -
моает бld'ь пустнмJ
житер,
•
явлsощмс.я
счис.1ения.
Ну.11евой
Результат земенн
записью
числа
результат
в
-
цепочка симвоJiо:в­
десятичной
изобраzавтсн
как
Например:
<SVЫВ
/!000/>
<SVUВ 1 - 1 /!/ /0/>
<SУМВ>
<.SVМВ
<~
/0/>
/59/ /10144256/>
<SУМВ 1 - 1 /0/ /25/>
...
......
....
......
~
~
'1000 1
1-167772!6 1
'0'
'0'
1 1000000000 1
1-25 1
системе
'0'
13
ф у н к ц и я
сvв о
для
целых
перевода
чисел
произвольной
CVB •
функция
<:,CVB
где
ведичины
2••24
десятичной системы в систему по основанию
Обрацение к неl имеет едедующий вид:
[D] >
- цепочка символов-литер, являющаяся
[D]
записью целого
выражение.
основанию
из
используется
числа со
знаком или
-
Результат замены
2н24.
Пустое
то
[D]
же число
десятично.14
или
в
восnринимается
Нулевой результат изобра~ется как
Ф у н к ц и я
6ез него,
пустое
системе
как
по
нуль.
/0/ •
CVD •
Для перевода целых чисел nроизвольной величины из системы
по основанию
CVD •
2••24
<CVD [N]
где
[N]
в десятичную систему используется функция
Обращение к ней имеет едедующий вид:
>
- целое число в системе по основанию 2••24 ~которое
Результат замены цепочка символов­
мажет быть пустым).
литер,
являющаяся
записью
числа
в
десятичной
счисления. Нулевой резулшат изображается как
Функции
CVB
и
CVD
описаны
образом:
SТАRТ
ENТRY
CVB
CVB,CVD
EК'IiN
NLМВ, SУМВ
EXТRN
ADD,MUL,DRN
1- 1
1+ 1
Vt DJ Х
Vt DJX
= 1=
Е~ D) Х
=
1
(СVВ0 VX>
<СVВ0 VX>
<CV.OO ЕК :::>
на
'0 1
рефале
системе
•
следующим
14
CVOO
VX 5I 52 53 S4 S5 56 <;Л S8 59 = +
<ADO ~<MUL {<СVВ0 VX>) +
/59/ /1:0!44256/>)
+
<NUМВ 5! S2 53 S4 55 S6 ';Л 58 59>>
ЕХ
CVD
= <NLМВ
ЕХ>
V{N)X = 1 - 1
1 + 1 V{N)X =
Е{ N) Х =
ЕХ = <.CVM <D~N
<.CVD0 VX>
<CVD0 VX>
<.CVD0 ЕХ >
~ЕХ) /59/ /!0144256/>>
1- 1
CVD0
CVDi
{ЕУ)
= <SУМВ ЕУ>
= +
ЕХ {ЕУ)
CVD2
<CVD0 ЕХ> +
<.CVD2 <5УМВ ЕУ>;>
Sl S2 SЗ 54 S5 S6 'fП S8 S9 = +
Si 52 SЗ S4 S5 56 ~ S8 59
ЕХ = .(CVD2 1 0 1 ЕХ>
END
Обратите внимание на то,
представленнем целого числа
4.
что
/59/ /10144256/
является
1000000000.
ФУНIЩИИ ЛlliСИЧЕСКОГО АНАЛИЗА
Ф у н к ц и я
Функция
ТУРЕ
ТУРЕ
•
предназначена
для
терма, с которого начинается выражение.
распознавания
типа
Эта функция не дает
аикаких новых: возможностей по сравнению с теми, которые дает
использование
только для
спецификаторов.
того,
Она включена
в
чтобы обеспечить СОВ\\естимость
библиотеку
с другими
реализациями рефала, и имеет следующее описание на рефале-2.
15
SТARI'
E)jT:&Y
ТУРЕ
TVPE
St:F) Х Е! = 1 F' SX Е!
StNJX Er = 1 N1 SX El
StiJI Е! = 1 2 1 SX Е!
StLJI EI = 1 L1 SX Ei
StDJI Ei = 'D' SX EJ
StO)X Е! = '0 1 SX М
tEX) Ei = 1 В' tEXJ El
= '•'
E)jQ
ф
н к ц и я
1
Эта
фующИJt
FliSТ о
пр~;~.цназнач~;~на
внраzения части,
вмеет
отщешrения
длину.
от
начuа
Обращение к ней
вид.
<FIR.SТ (N]
где
дм
вмеющей указанную
[~
-
(EJ >
макроци))ра,
а
[Е]
-
произволыюе о6 1 екпое
внраzение.
EcJIИ (Е]
представмет собой посJiедава'l'еJ[ЬНостъ из ~нее,
чем [N] термов, резуJIЬ'l'атом замены JIВJIЯeroя вырааеиие
'•' (Е]
Если ае дJDIНa [Е] не меньше, чем
[NJ
термов, резулЬ'l'атом
замены я:вмется
[Ei] )
где
[El]
и [Е2]
-
[Е2]
такие внраzенiiЯ, что [Е]= [Е!] [Е2]
ЭТОМ [Е!] SIВJIJIB'l'CSI ПOCJIBДOВ&'l'eJIЬHOC'l'bll ИЗ рОВНО u~J
и при
Т8}*0В.
!6
Наnример:
<FI&ST/2/ 1 А 1 \ 1 В 1 )'С 1 > ...- t 1 A1 t 1 B1 )) 1 C1
<FIRSТ /5/ 1 А 1 \ 1 В 1 ) 1 С'>-..
'•A 1 t 1 B1 )'C 1
Ф у н к ц и я
Эта
функция
выражения части,
LASТ
•
предназначена
для
имоощей указанную
отщепления
длину.
от
конца
Обращение к ней
имеет следующий вид:
>
<LASТ [N) (Е]
где
[N]
макроциi>ра,
-
а
[Е]
- произвольвое
об' ектное
выражение.
Если [Е]
чем
представляет собой последовательность из менее,
[N] термов, результатом замены является
(Е]
'•'
Если же длина [Е]
результатом
составляет не менее,
чем
тер.4ов,
[N]
замены является
[EI] \ (F2] )
где
и [Е2]
[EI]
этом (Е2]
- такие выражения, что [Е]= [Ei] (Е2]
и при
является последовательностью из ровно (N] термов.
Например:
/2/ 'A'l 1 B1 ) 1 C1 > ~
<LASТ /5/ 1 A1 l 1 B1 )'C'> ~
<LASТ
П р и м е р.
очередную запись
литеры,
Опиmем функцию
из файла
а остальные
-
SYSIN
отбрасывает.
1
А 1 \\ 1 В 1 )'С')
1
А 1 \ 1 В 1 )'С• 1
CA&D72 ,
и берет
которая
из нее
читает
первне
72
I?
CARD?2
CARD?2X
EXTRN CARD
= <CARD?2X <.LASТ /8/ <.CARD >>>
Ei t Е2) = Е!
'•' =
Напоминаем,
что
когда
CARD
достигает конца
файла она
выдает пустое выражение в качестве результата замены. Именно
этот
случай
CARD?2X
предусмотрен
во
втором
предложении
функции
о
LENGW
Ф у н к ц и и
LENGR.
и
о
Эти функции предназначены для вычисления длины аргумента.
Обращение к ним имеет следующий ВИд:
<LENQW
<LENQR.
[Е] >
(Е)>
где [Е] - произвольвое об' ектное выражение.
Результатом замены является выражение
где
[N] - макроцифра, которая равна длине выражения [Е]
При этом функция
в
термах,
т.ео
состав.JU~Ющих [Е]
дJIИНу
выражения,
соста~W~Ющих (Е] •
LENQW
выдает ДJIИну выра:еНИR,
кожичество
а функция
т.е.
термов
LEN~
количество
-
измеренную
нулевого
CИМIIOJIOB
и
Например:
<.LENQW 'А' 0 { 1 А 1 )> +- /3/ 'А' 0 { 1 А 1 )
1 А 1 t) t 1 А 1 )'>
.... /6/ 1 А 1 t) t 1 А 1 )
<.LENQW>
~ /0/
< LENQR,
уровня,
:выдает wреальную"
схооок,
18
Ф у н 1t ц и я
Эта функцu
JIU..TE •
копирует tразмноаает)
вwраекие
:в sа.цаином
ко.ачест:вв акавмп.аяров. 06раqвние к ней имеет ви.ц •
.(JIJLТE [н] [Е)
где
[н]
>
махроц.Wа,
-
а
[Е]
-
проиsвоАыюе об'ектное
внраение.
РеsуАьтатом замвин является
(Е) (Е)
••• (Е)
rде Вliраевие [Е] повторяется [н] раз.
(N] равно нyJIIO, результатом зааенн
В частности, eCJIИ
является
ПfСТОе
внраевие. Например:
Во
(МЦ.ТЕ
<МULТЕ
/5/
1 А'>
/2/
1 А'
<МIЛ.. ТЕ
/0/>
вСЯJtой
с:уществует
прiiНВтой
~
реализации
отношение
в
~
t 'В')> .,...
этой
рвф&J~а
порядка,
реализации.
ВОСПОJIЬSОВ&ТЬСЯ С ПОМОЩЬЮ функции
Ф у н к ц и я
Функцu
СРSУМВ
СРSУМВ
'ААААА'
1А•t
•в• >• А • t •в• >
[пусто)
на
множестве
определяемое
Этим
СРSVМВ
свмвоАов
кодировкой,
оrношвнием
•
предвааначена
для сравневи.'i
CIIIOOJioв.
Формат обращенu:
<СРSVМВ
rде [А] и [в]
[z]
-
LAJ
[В]>
симвоАы.
моаво
•
Резуnтат замены имеет ·вид:
19
где
z -
симвож-яитера.
При этом
8С4И
[А]> (в]
то
[z]
е ежи
(А] = [в]
то
~]
'=' ;
ЭС4И
(А]< (в]
то
(Z]
'<'
=
'>'
Симвожы сравниваются по их првдСТВВ48ИВ11 0 ~~епользованном,у
Это ЭH&ЧII'l 1 ЧТО R.U.CCЫ CIDIВ040B
В даннОЙ р88JIИЗ8ЦИИ рефв.Jrа.
упорядочены сжед3I011tИМ образом ~в поряце возраст~)
-
симвоян-яитеры,
симвожн-метки,
симвожн-чисжа,
СИМВ04Ьl-ССЫАКИ.
Сами
симвожн-яитеры
с:вмвоJ~н-Метки
-
-
-
по
в порядJtе описания
-
в зависиwбсти
память З11tt);
ccWiltИ
упорядочены
коду
EВCDIC
;
по а.цресам расшояоаениs фующий в памяти ЭВМ
~внутри одного модуц
кодуJIЯМИ
:
фymщlllt.
от поСJiедо:ватеяьности
сим:вояа-:-чисжа
-
по значвиа
чисея;
мцду
эаrруз:ки :в
CJIIIВOЖн­
по а.цресам -rояов JIIIIИROB ~JWТорые видi01 ва печати).
Напр1116ер:
<СРSУЫВ 'А'
<CPSYIШ
'Z'>
/2/ /!/>
<СРSУМВ
1 А'
IXПI>
<СРSУМВ /ХП/
/0/>
.......
....
~
'<'
'>'
'<'
'< 1
~о
5.
ФУНКUИИ
Pi
И
Ш
Первичные функции
вычитание
единицы из
следующи.И
Pi
и
МI
макроцифры.
производят
приоавление и
Обращение
к ним
имеет
вид:
<.Р!
<МI
(N]>
[N]>
rде [N] - макроцифра.
Результатом
замены
для
Р!
является
макроцифра,
на
единицу большая,
чем [N]
Результатом замены для Ivd
является макроц!IРра. на единицу меньшая, чем [N] • Например:
<:Pi /!/>
+- /2/
/ffi0/
...- /9/
/?ffi2/> ~ /?ffi'I./
/!/>
.... /0/
<Pl /'379/>
.: : rм /!0/>
<Мi
<М!
Попытка
вычесть
~
nри6авить единицу
единицу
из
к
макроцифры
"отождествление невозможно•.
макроцифре
/0/
/!6??'72!5/
приводит
к
ИJШ
авосту
~I
6. ФУНКЦИИ ДЛЯ PAOOГil С СИМВОЛЫii.IМИ ФАЙЛАМИ
В
этом
CLSGET ,
разделе
LIВPtfl'
оnисаны
,
OPNPtfl' ,
функции
работы с последовательными файлами.
записями ФиксированноИ
ООлее
АИТер.
80
LIВGET
до
80
литер.
80
КаlдНЙ файл,
содержацими не
литер допояняются
Записывать можно
файлы с заnисями фиксированной длины по
с которым будет
дoJDJteн 6ыть описан
,
Читаться могут файлы с
и переменной длины,
Записи длиной менее
справа пробелами
OPNGEТ
,
предназначенные дл.я
CLSPtfl' ,
80
только в
житер.
работать рефал-nроrрамма,
перед ее запуском с
помощоо nредложения
FILEDEr tдл.я CMS или .!ЩО),
лиОО с помацью DD-предложенм
tдл.я OS/360 или ОС .ЕС).
При этом до.uны быть указаны
параметры ОСВ:
ШРМ и LRECL. Например:
FILEDEF ХХХ DISK ААА PLIOPT А tШFМ F LiECL 80
/ /ХХХ
DD
DSN=t.IB. SVMt МЕМВЕR!), DISP=SlШ,
DCВ=tR&CFM=FВ,LRECL=80,ВLKSIZE=800),
UNIT=2Эi!,VOL=SER=AUТOL
Описанные в
60лее чем с
этом разделе
функции позволяют
двум.я файлами одновременно.
этих файлов доступен
толъко на чтение tи
чтения'>,
файл -
а другой
При
работать не
этом од101 из
именуется "файлом
доступен толъко
на запись
tи
именуется •файлом заnиси•).
Чтение файлов
LI:OOEТ
,
OPNGET
nроизводится с
и
CLSGE."'' •
nомощью nервичных
функц~
OPNQET •
Ф у н к ц и я
Прв.де
о т к р
чем
wт
ь
начинать
чтение
ero
файла,
с помацш функции
OPN~
•
с.аедует
Обращение к ней
JIМeeT С.lедуi)ЩКЙ ВИД:
<OPNGEТ [D[)IAA!E] >
rде
[DDN.AМE]
это
-
представляет собой ИМ.11
цепочка
симво.аов-.11Итер,
тоrо прв.цжоzения
PILEDEF
которан
DD,
и.11и
в
котором описан открывавмнИ фай.11.
Ф у н к ц и я
После того
LIOOEТ
•
ках файл oткplll',
записи с помощш
функции
можно ч и т а т ь
LIOOEТ
•
Обращение к
из иегu
ней имеет
с.аедующий вид:
<LIВQET>
В
рdзультате
обращения
функция
прочитать очередную запись из файжа.
LIEQEТ
пытается
Если файл прочитан до
конца, результатом замены ЯВJIJiется пустое выражение. Если же
в фай.ве еще остались
очередную
запись
80
виде цепочки из
Ес.11и в
иепрочитанные записи,
и вьщает
ее
момент обращения
к
LIBqEI' автоматически
(D[)IAМE) =' SYSGET 1 •
После тоrо.
з а к р н т ь
CLSQEТ
LIВQEТ
фейж чтения
открывает файл,
•
с помощш
ней JDI3eт след~ ВИд
не 6ш
д.вя котороrо
как работа с файлом чтеНИR закончена,
ero
читает
символов-литер.
открыт,
Ф у и к ц и S:l
LIOOET
в качестве резу.аьтата замены в
функции
CL~
•
нужно
О(jращеиие к
23
Резу.11ьтат замены
Пос.11е
того,
-
пустое выраJtеи:ие.
как
оdра'П'IЬСЯ 1t фующп
фа1.11
чтения
OPNQEТ
закрыт,
мааио
вновь
и начать чтение дpyroro фвйJ18.
В ча~ости, аю..ио прочиать повторiо rот ае oi!IIНЙ фай.11.
Запись в
OPNPur ,
фай.11ы производиов с ПOМOIILЬII
Ф у н к ц и я
llp81Щe,
о т 1t р
фушщ.d
LIВPur
,
CLSPur •
OPNPUТ
чем
wТ
ъ
•
Ч'l~JI:ИciO
с
DИС&!'Ь
помацю
В
файJI,
пврв:ичной
91'0
фувх.ци
c.I8ДJ8'1
OPNPIЛ
•
Обрщеиие к ней имеет с•~ вц:
<OPNPur [DDNAЫE] >
где [DDNAМE]
- цепочка СJ81В0.10в-&твр, которая предст8В.Jiяет
roro
собой имя
FIL.EDEF
пред.Jiоаеиия
IIUIИ
'DD,
в котором
оп:исаи
и с а т ъ
в него
О'l'ltрываемый фа1.11.
Ф у и к ц и в
ПосJ:е того,
записи
с
LIВPIЛ
•
it81t фв1.11 onpwт,
помощJЮ Фtвкцп
мокио
LIВPIЛ
•
n
обращеаие
:к :которой
имеет с.11ед;ующий вц:
<LIВPIЛ [Е]>
где [Е]
- об' ектное внрааеюtе, которое не coдepu:'l составиlil
СИМВОЛОВ.
В
результате
записывается
формируются
обращения
:вооеjще
следующим
говоря
к
LIВPUТ
неско.11:ысо
образом.
в
вwxQДSOI
записвl,
Снача.11а
все
фа1.11
:которые
С!рJК'lурвве
24
скобки в выражении [Е]
1) 1•
на куски по
80
иреобразуются в символы-литеры
Sгrем получиВIIаяся
80
литер.
80
JIИTep пробелами справа.
в результате этих деlствий получается
частности,
N
и
EcJIИ последний кусок содержит менее
литер, он допоJIНЯется до
файл записывается
'1.'
цепочка символов-литер разбивается
записей,
есJШ аргумент
N кусков,
кщдая
[Е]
ДJIИНОЙ в
пуст,
80
в файл
Если
в выходной
JIИTep.
В
добамяется
нулевое число записей, т.е. состояние файла не изменяется.
Результатом замены
для
LIВPUT
всегда является
пустое
выражение.
ЕсJШ в
открыт,
которого
момент обращения
к
LIВPUT
файл записи
еще не
LIВPIЛ
автоматически открывает на запись файл, для
(DDNAМE]= 1 SYSPUT 1 •
CLSPUT •
Ф у н к ц и я
После того как работа с фаИлом записи закончена,
з а к р н т ь
его с помощ:w функции
CLSPUТ
,
следует
обращение
которой имеет следующИЙ вид:
.(CLSPUT>
Результатом замены
для
CLSPUТ
всегда является
пустое
вырааение.
После того как
файл записи закрыт.
качестве файла Ч'!'ения с помощ:w функции
его содержимое.
Кроме того •
можно
OPNGEТ
открыть его в
и прочитать
можно о'Dtрыть на запись другой
файл и записывать в него информацию.
25
7.
ФУНКЦИЯ
Во
APPLY
мноrих случаях
аварийной
11свооодная
свою
требуется,
ситуации
память
работу,
анализировала
какие-то
дальнейшие
случаев предусмотрена функция
к
ияи
не прекращаяа
аварийную
действия.
ситуацию
и
Дм
таких
рефал-проrраммы
имеет
APPLY •
APPLY •
Ф у н к ц и я
Обращение
возникновении
невозможно''
исчерпана'' рЕфSJJ-программа
а
nредпринимала
чтобы при
''отождествление
этой
функции
из
сяедупций вид:
<APPLY (Е]>
rде [Е]
- произвояъное выражение.
Выполнение
Создается
этоrо
новое
вызова происходит
попе
зрения,
в
следуЮщим
которое
образом.
помещается
функциональный терм
<(Е)>
После этоrо
даяается попытка вычислить
этот функциональннй
терм.
Возможны три
t N) ,
исхода этой
попытки:
останов "отождествление
"свободная память исчерпана''
В случае
N результатом
нормальиыi!
невозможЖ>"
t:Ю
t S) •
замены будет выражение
и
останов
останов
26
[ж)
1 N1
резуnтат вычис.1еим терма
[mJ -
где
В cJJyЧae
•
результатом замвин будет выpazвiUie
R.
(Ж]
IR,I
где [EI]
<. [EI] >
.::: [Е]>
- оод&J8111110е того ф;увкцисвальноrо терма ВИда
пommca внчислеiUIЯ
•
которого
приве.11а
1t
авосту
•о'l08ДеСТВJiение иевозмааво".
В CJIJЧae
S
результатом З8111e&li будет :внрааение
1 Sl
lloCJie
тоrо,
х
APPLY ,
Моzио
~OIJI!IPOBSН,
замвин
резу.11ьтаж
:К8lt
дoпo.uurreJiьиoe поле зренИR,
ооздаиное в результате обращения
уничтоаавтся.
обр&lllаться х
ре:курсивно.
APPLY
В ЭТОМ
С.tуЧае
образуется стек из по.1ей зрения.
8.
Ф1НКЦИИ ДЛЯ Р .АБОI'Ы: С СИМВОЛАЮhМЕТКАII!
В
возникает необходимость
некоторых с.11учаях
цепочку литер
в СИМIIО.Il-Метку
символа-метки
Например,
из
/ AВCD-Eli/ И.U,
цепочку 1 А-!23 1 •
цепочку
цепочки
JIИТер,
литер
например,
наоборот,
ИJIИ,
составляющих
1 AВCD-Eii' 1
СИМВОЛ
превр~ить
nолучить из
ero
построить
/ А-!23/
превраТИТЪ В
При этом до.uно внполняться сле.цующее требование:
будем превращать одну
и ту ае цепочку
тело.
CIDIВOJI
если мы
JIИT&p в СИМВОJI-М&'l'КУ
2?
несколько раз,
то все созданные символы-метки
равны друr другу,
же
т.е.
должны быть
являться экземплярами одного и
того
СИМВОJ[а.
Для
создания и
функции
Fl'OCНAR.
Ф у н к ц и я
Эта
расчленения символов-меток
и
CНAR.TOF
испо•ьзуются
•
Fl'OCH.AR. •
функция
иревращает симво•-метку
которая является
TeJ[OM
символа-межки.
в
цепочку
mтер,
Обращение к ней имеет
вид:
<Fl'OCНAR.
(F] ">
где [F] - символ-метка. Результатом замены является цепочка
литер, IIBJIJI!Oщaяcя телом символа [F]. Например:
<:FТОСН.АR. /А-!23/>
-..
1 A-I23 1
<FI'OCНAR. /АВСD/>
-
1 АВСD 1
Ф у н к ц и я
Эта
функция
CНARTOF
•
превращает цепочку
литер
в
символ-метку,
имеющий тело, совпадающее с заданной цепочкой литер.
та же
цеnочка
метку.
литер превращается
где [С]
и
тот
же
Одна и
символ­
Обращение к функции имеет вид:
<CНAR.TOF
метка.
в один
-
[С) >
цеnочка литер. Результатом замены является символ­
Например:
<СНАRТОF 'А-!23 1 >
<..СНАRТО? 1 АВСD'>
Функция
CНARTOF
-..
/А-!23/
....
/АВСD/
создает
и
поддерживает
таблицу
символов-меток,
порожденных ею
из
цепочек литер.
цепочка литвр встретилась в первы11 раз,
функция, имя
меткой.
новая
которой
является
Если
то создается пустая
соответствующим
символом­
Если такая же цепочка литер встречается аце раз, то
функция
не
создается,
а
в
качестве
результата
выра6атываетс~ имя ранее созданной функции.
В
некоторых
создаваемшt
из
случаях
тре6уется,
цепочки
символом-меткой.
литер
определенным
(С]
что6ы
FUNCTAВ
СНАИ'ОF
,
с
и ИМ80ЩИ11(
FUNCTAВ
•
•
Эта функция регистрирует в та6лице символов,
функцией
совпадал
в рефал-прогр8111.1:е
тело [с]. Это достигается с помощью функции
Ф у н к ц и Я
символ-метка,
заведомо
указанный символ-метку.
соцдаваемоlt
06ращение к ней
имеет следуюЩИЙ вид:
<FUNCTAВ (F) >
где
[F] - сиМБОл-метка. Результатом
[F) регистрируется в та6лице
замены является [пусто).
Символ
всякий раз,
когда функция
CНAR.TOF
литер. совпадающую с телом символа
СНАR.ТОF
6удет СИМВОJI
Функции
построения
CНAR.TOF
После этого,
6удет получать цепочку
[F], результатом функции
[F].
и
FUNCTAВ
та6лицы символов,
увеличить количество памяти.
ISASIZE
символов.
нуzдаются
поэтому мажет
в памяти
для
потре6оваться
заказываемой посредством опции
при заnуске рефал-программы.
29
9.
ФУНКЦИИ ДЛЯ РАБОТЫ С ЛЕКСИКОIРАФWШСКИ УПОРЯДОЧШНШ.Я
МНОЖЕСТВАМИ ВЫР .АЖ.ШИЙ
В этом ра~еяе описываются функции,
статического и
динамического ящиков
задачи.
многих:
Во
прияоzен.мх
аналитических: вычислениях
выражения
по
на ЭВМ)
векоторому
использующие понятия
дпя решения
Рефала
следующей
~например,
отношению
порядка
и
строить
составные даниве из частей с учетом этого поря.цка.
выполнение
форме.)
операций
В
над
полиномами
таких алгоритмах
в
требуется упорядочивать
в
Шример:
"нормализованной"
сравнение выражений
является
одНой иэ частых операций.
Проrраммируя
обычно
заводИт
операции
над
уnорядоченными
вспоuогателъиуD
функцию
двух
выреиениями,
аргументов,
имеющую примерно тахой формат вызова:
<(СОМРШ t [EI]) ~ [F2} )>
где
~
(z]
[Z] - это символ-литера '.t...',
TaRёJi
фухщия сравнивает
1 =1 или
:внрзzения
'>'.
[EI]
и [Е2]
по
зархсированному в ней отношенJ!Ю порядха.
вычисление
значения
функции сравнения
СОМРАRЕ
часто
требует достаточно много шагов рефал-мвmины lособевно,
[Ei]
и [Е2]
•ДJIИННые" и •почти совпадаот":
простейшем лексикографическом порядав
просмотреть совпадаощие части)
С
другой
сравнения,
п~аются гораздо
tНапример,
самый
такова,
pese,
нужно посяедоввrельво
•
статистика
стороны,
как npaвJUo,
если
ведь двае при
использования
функций
что значения ее аргументов
чем они оравниваотел r.1>ЖдУ собой.
быстрый
алгоритм
сортировки
N
"неизменных" эл~нтов
собой
N•LOG~N)
последовательности сравнивает
В связи с этим возникает вопрос:
анализу
вырааений для
множестве перенести
их
мецу
раз.)
пороидения,
а нельзя .11И работу по
выяснения их
места в
упорядоченном
из стадии попарных сравнений
чтобы
собственно
сравнения
на период
вычислялисъ
"быстро•?
О'!вет: можно;
предВарительного
В
только надо гд&-то хранить результаты этого
анализа.
Рефа.л&-2
статическими
~"об' екта"
понятие
и
если
-
~места
динамическими
хранения"
ящикаа.
использовать
ориетированного подхода в
Ба'КНЫМ свойством:
реализуется
Понятие
те~ологию
программировании)
ящика
об' ектно­
обладает одним
в ящик можно поместить JIЮб;ую информацию,
а затем в качестве представителей этой информации в данных и
аргументах
к и
,
функций использовать
которые сами
иЩюрмаци:и;
доступ
по себе
к содержимому
фиксированным набором функций.
представление
данных
и
JIIOбol
хранимой в ящиках.
Здесь
на
ящика с
момент
моменты
создания
использования
вычислениях.
В
с и м в о л н
никак не
-
с с н л
отражаnт вида
ящиков можно
-
этой
ограничить
в которых будет
с к р н т о
дополнительной
информации,
BSIШO наличие четкого разделения
занесением в
содержимого
него
ящика
момент ФОIХИIJОвания
значения
в
и
последующих
ящика можно
один раз
ВЫЧИСЛИТЬ И запасТИ В ЯЩИКе JIIOб;yiO ДОПОJIНИТеЛьнуiО информацию:
"снаружи" этот факт никак не будет виден.
Будем
называть
т а б у л я ц и е й
использования ящиков,
когда помещаемая в них
такой
стиль
информация в
дмьнейшем не уничтааается, хранится все время •жизни" ящика
и используется в фиксированном наборе функций от содераимого
ящика.
Про
эти
функции
и
будем
''табулированн" с помощЬI:J данных ящиков.
говорить,
что
они
3I
В чем может заключаться
Иначе:
Для
по
этого
достаточно
который отражает
элементов,
того,
со
хранить в
его место
для которых
самих значениИ
его можно
&лесте
упорядоченного множества
номера,
"табуляция отношения порядка''?
како!-i инфо JЪ!аL\ИИ
вычислить "быстро" 1
значением
в отношении
номер,
порядка среди
:уже nоро.ждены sцики,
и
сравнивать эти небольшив целые
конечно,
элемента
ящике некоторый
зажем
числа.
Эти
должны быть скрыты от пользовтеля:
они могут меняться,
т.к.
время
от
Т6[
вместо
I:!ремени
более
возникает
необХодимость в перенумерации.
В
существующей
версии
поддерживается
л е к с и к о г р а ф и ч е с к о е
некоторыми дополнительными
Реализованный
выражений использует
с
"рычагами уnравлеНШ!"
\В будущем предполагается ввести
nорядка.)
одно
порядка
только
отношение
порядком.
средСВа описания отношения
лексикографический
следующий порядок
порядок
злементов выражения
\в порядке возрастания):
-
иравый конец выражения;
- "J" -
nравая структурная скобка;
- "\" - левая структурная скобка;
-
символы,
кроме ссылок \сами
функции
СРSУМВ
символы
ссылки
упорядоченных
они упорпдочены с помощ110
);
на
ящики,
множеств
представл.RЮщи&
t они
сами
элементы
уnорядочены
по
присущему им отношению nорядка>.
В
выражениях,
использовать
функциями,
подлежащих
символы-ссылки
кроме
уnорядочению,
на ящик~,
созданные
нельзя
.цруги.ми
оnисанных: в этом разделе.
Для структуризацшt совокупности
упорядоченных ящиков она
З2
раз6ивается на конечное число
и ~ е и
я щ и к о в
ТоКо
с е м е й с т в о
семейств используются
в
tкоторьtе д.u других
нп хранится
данному
имена
цепей использовать нельзя.
иехоторая информация,
семейству).
Таким
В качестве
с т а т и ч е с к и х
о6разсм,
отиосяща.яся к
чтобы
определить
упорядоченные семейства, ну.ано в программе написать одно или
несколько предложений вида:
SWAP (F]
где [F] - имя семейства
Элементы
tc
семейств
t1D411
разпи:чннх
статическоrо ящика) о
семейств
помощыэ функции
сравнива>тся
СРSУМВ
):
по
6оnвпе то,
именам
которое
об'явлено нике по тексту проrраммьt.
Имена описанных ниже функций начинаются
REFERENCE t ссыпка)
слов
что
речь
идет
о
их
с 6укв
tпорядокJ,
операций
представленных
JIO
-
от
что ознв.чает,
над
элемент&\!И
симвопами-ссыJ!Ками на
содержащие о
Ф у н к ц и я
-
RОТАВ
ченного множества''
''табулировать элемент упорядо-
:
<RОТАВ (F] [Е]>
где [F]
ORDER
вшtолнении
упорядоченных: множеств,
ящики,
и
- символ-метка -
-
[R]
имя семейства,
элемента
семейства,
[R]
представпяющий элемент семейства.
содержать
символов-ссылок кроме
функцией
RОТАВ
[EJ
-
значение
символ-ссiiJIКа на
ящик,
Вьtражение [Е] не доJIЖно
тех,
которые
созданы ранее
•
Эта функция заносит значение [Е] в семейство [FJ
вwцает представитель гтоrо элемента - символ-ссылку
Пр:а повторном о6ращении к
и
[R.] о
RОТАВ с такими же значениями [F]
зз
и
[EJ
вьщается ccblJIRa на тот же С1114ЫЙ ящик tкроме случаев,
когда тот ящик 6ыл уничтааеи сборкой мусора из-за отсутствия
CCWIOR на него).
ф у Н R Ц И Я
элементы
~REL
сравнивает два
упорядоченных семейств.
СИМВОJI&-ССЫЛКИ на
сформированные
функциеl
RGI'AВ
[&] [Q] '> ~
c(IIOiEL
где
[R.]
и
u• '>'
(R1= [Q]) •
'='
[z]
[Q] - символ~о~-ссWJWt. [z] - CIDU!OЛ-J[И'l'epa
t
1
=1
выдается тогда
Значение функции
и
только тогда,
внчисJUiется за время,
IOR.EL
1.( 1 ,
когда
сравнимое
со средним ШЮ"Ом реф8JI-машииы.
ф у н R ц и и
значение
Где
ЮFАМ
элемента,
и
IOVAt. -
ВiiдМ>Т имя сеАЕйства :и.
соответственно:
<iDFAМ [R.]> ~
[F]
<.liOVAL [&]> ~
(Е]
(R.l - CIOOIOЛ-CCWIКa,
сформироваивнй функцией
ЮТ АВ .
резуJ[Ьтате обращения к ней и ииде:
<IЮТАВ
[F]
[Е]>
Именно эти [F] и [Е) :вwцаются фующами
liiOFAМ
и
IIOVAL •
34
Кроме использования
ношения порядка,
н и м а
n
ь н и й
и
Ф у н к ц и и
<JIOМIN
встроенного лексикографического
в каждом семействе м011но
м а к с и м а
~N
и
ЮМАХ
(F] (Е)> ~
< liШU [F]
(Е]>
n
об' явить
ь н ы й
от-
-
м и
эпементы.
имеют такой формат:
[пусто]
~
[пусто]
где [F] - им.ч семейства. [EJ - значение элемента семейства.
При
первом обращении
семейству [F]
значением
минимаАьного
элементов
<~ОТАВ
функции
IIOМIN
в нем эапшинается,
даниого
[F] (Е]>
tИJ[и
lсоответственно:
семейства.
будет
В
выдан
ЮМАХ
что отныне
[Е]
)
к
буде т
максимального)
дальнейшем
при
вызове
симвоп-ссWIКа
на
ящик,
представJIЯЮщий этот эпемент.
Еспи к функции
раз,
то
:IIOМIN
lипи
о т р е э о к
t соответственно:
эпементов семеИства:
возрастания. для
RОМАХ
При использовании
-
обратиться несколько
JiU11AX )
формируетсs начальный
дnя
ко&ечныl)
-
iOМIN
в порядке
в порядке у6ыванv.я.
ROМIN
и
&ШАХ
возникает конфликт,
если обращение к одной из них происходит поспе того, как уже
был вызов
[Е].
JЮТАВ
:IIOМIN
,
или
:IЮМАХ
с такими
ze [F]
и
Этот конфликт разрешается спедущим образом.
Еспи
эпемент
минимальных
со
значением
ипи маtсимальных
тот новое обращение к
ROМIN
[Е]
уже
есть
элементов данного
или
ROМAI
в
списке
семейства,
~~норируется.
Еспи с одинаковыми аргументами поспедовательно вызывались
R.al'AВ
,
ROМIN
два обращени к
на
tиu
RОТАВ
раэпичные элементы
сформирован в
порядка,
ROOX ).
а
R()ЛАХ ) •
семейства;
соответствии с
второй
а затем снова
~аrАВ
,
то
выдадут не совпацазщие символн-ссЫJIКи
-
по
при
этом первыli
будет
пексикографическим отношением
указанию
функции
ROМIN
l или
35
Ф у н к ц и я
R.O:IilliSET
счищает
<: RORESEI' [Fi] ••• (FN]> ~
где
[FI] ••• [FN] В результате
семейств
укаэшJные семейства:
[пустоl
последовательность имен семейств.
обращения к
забываются
элементов и
все ящики,
nереводятся
в
функции
списки
nредставляющие
специальное
ROiESEТ
минимальных:
состояние,
и
у указанных:
максимальных:
элементы семейства,
которое
авосту при исnользовании их в аргументах функций,
в этом разделе.
ссылок,
Лцики
-
элементы семейств,
будут в дальнейшем удалены
приведет
к
описанных:
на которые пет
из nамяти ЭВМ очередной
соорхой мусора.
БЛАГОДАРНОСТЬ
Авторы выражают благодарность Е.В. Травкиной.
трудоемкую работу по реализации
ассемблера.
вьmолнивпей
функций ари!lметики на языке
36
ЛИТЕРАТУРА
(БР 1977]
Базисныit
машинах о
Мо
рефал
,
и его
ЦНИПИАСС ,
реализация
на
вычислительных
197? о
[КПРТР 19?5]
АноВ.Климов,
Е.В.Травкина.
ЛоВ.Проворов,
С.А.Романенко,
Рефал в мониторной системе
Входной язык компилятора и запуск программ.
АН СССР
N 8,
М.,
Ду6на
БОСМ-6.
Препринт Иillvl
1975.
[кР 19?5]
Ан.В.Климов,
Дубна
БЭСМ-6.
СССР, М.,
1975.
С.А.Романенко. Рефал в мониторной системе
Интерфейс рефала
и фортрана.
ИПМ АН
АЛ~АВИТНЫЙ УКАЗАТFJlЬ ФYНIЩJit
(ADD t (NI] ) (N2] > _.
<ADDN t (N1] ) [N2]> ~
~
<~LY ~1 ~]>
.,....
(С.АВD>
..,.
<СН.АВТОF (С]>
.,.
(CLSQEТ>
~
<CLSPUf>
(N]
7
9
(N]
[Z]
[Е!:]
ljiycтo)
25
4
27
(F]
Jjlyc'l'dJ
22
JjlycтQJ
24
...
[zl
I8
-
(N]
IЗ
-
IЭ
> -
[D]
(N]
<DIVN ~ [Ni] ) [N2]> -
IN1
7
9
7
t [EI] ) [F:a]
15
(с]
jWcтo]
27
28
I0
(сРSУМВ
<CVB
[Al
(В)>
[D] ">
<CVD [N) >
<DIV ~ (N!] ) [N2)
t (Nil ) (N2] >
t (Nl] ) [N2] >
(Fl:&ST [N] (Е1 >
(DR.
<D&N
...
-
[Q] ~ [R] )
[Q] t [R.] )
<F'l'OCНAi. (:F) )
<PUNCTAJ:! (:F] >
<QCD t (Ni] ) (N2) >
(LASТ (N) (Е]>
(LENQi, [Е)>
<LENQW (Е]>
-
(N]
..,.
-
('roj]
[N)
<LIВGET>
-
<LIВPur [Е]>
( MUL t (N!) ) (N2)>
<МULN t (N1) ) (N2)>
<.MULТE [N) [Е]>
<М! (N]
<N:Ш.. t (NI) ) (N2)
<NUМВ [D]>
(OPN~T [DDN.Aм&J>
<.OPNPUf [DDNAМE] >
-
-
9
~I] ~ [Е2]
Iб
(Е]
[Е]
I7
(Ii:JCТO)
17
22
23
_.
-
[N]
7
~
20
ft+-I)
[Z) t (NI) ) (N2) П:
-
-
-
[Ш0]
[N]
9
[El rю ••• 1ю
18
~]
(nycro]
I!IYcro]
22
23
п
З3
<PilNT IE1>
<Pii NTC (Е] >
<PRINТМ ~J>
<.PROUI' ~]>
<.PROU'ro [Е]>
<.PiOt!l'M (Е]>
<.Pi [N]>
<JIOF.AМ (R.]>
<.IIOМIN [F} [Е)>
<:!ЮМАХ (F] (Е]>
<ШТАВ [F] [Е]>
<.iOVAL [R]>
<.ЮiEL (R!] [В2] >
<.iOiESEI' [11] ••• (F.2]>
<SUВ t [NI] ) [N2]">
<SUВN t (NI] ) (N2] >
(SУМВ [N]>
<ТУРЕ [Е)>
--------~
~
~
-
!}:]
iiO
I.EJ
litycтo}
ljiycтo]
D:Iycтal
[r-/+!]
(F]
(Jiycтo]
(j:Iycтo]
[2)
(Е]
(Z]
[пусто]
il)
5
5
5
5
5
5
20
29
29
29
29
29
29
29
7
(N]
9
/Р]
12
f?]
[.Е]
!14
Климов Андрей Вапентинович, Романенко Сергей Анаталъевич
тема программирования
Рефвп
- 2
•
Сие
-
для ЕС ЭВNI.Оnиса.ние бибпиотеа:и
фуикuчй ••
Редактор
В.С. Штаркмвн.
Корректор
А.О. Лацис.
Подоисанок печати 08.12.86г. N' Т- 21902. Заказ Ni 47Э.
ФОрмат бумаги 6ОХ90 1/16.
Тираж 430 экз.
055 (02)2
Объем
1, 7
уч..-изд.л.
Uена
14
и:.оп.
Оrпечатаво на ротапринтах в Институте прикпвдноА математик АН СССР
©
.Мосхва, М кусекая IUI.
4.
Все авторские права на иветояшее издание принв.дпежат
Институту
nрикладной математики им. М.В. Келдыша АН СС<':Р.
СсыJIКи на издшmе рекомендуется делать по следующей <f.орме:
н. о., ~миlDtя, назна.ние, лрепринт Ин.
АН СССР, год,
прикл.
мате м.
им. М.В.
Kcnд},JU!a
No.
Распространение:
препринты института продаются в магnзинах
АхадеМ!DIИги г. Москвы, а также распространяются через Библиотеку
АН СССР в порядке оuмена.
Адрес:
СССР,
125047,
Москва-47, Миусская пл,
4,
Институт
прикладной математики им. М.В. Келдыша АН СССР, ОНТИ.
PuЬlication
are reserved
the USSR
Ьу
Асаdещу
a.nd distribution
the Keldysh Institute of Applied blathematics,
of Sciences.
The references should
initials,
Асаdещу
nаше,
Ье
typed
title, preprint,
the
Ьу
f~llowing
Inst.Appl.Мathem.,
form:
the USSR
of Sciences, year, N(number).
Distribution. The preprints of the
Applied
for this j!reprint
rightв
Мe.thematicв,
the USSR
Асаdещу
Keldyвh
Institute of
Of Sciences are sold 1n
thc bookstores "Academkniga", Moscow and are distributed
USSR
Асаdещу
of Sciences Library
Adreвs:
USSR, 125047, Moscow
Ieldysh Institute of Applied
Information Bureau.
ав
Ьу
the
an exchange.
А-47,
Мiusskaya
Мathematics,
Sq.4, the
Ac.of Sc., the USSR,
Uена
14
коп.
Download