Subject: Re: Объявлени
From: Valentin Turchin (VTurchin@BellAtlantic.net)
Date: Wed Aug 30 2000 - 20:46:35 MSD
Dear Shura,
Spasibo za Objavlenie. Khorosho chto rabota okonchena.
Est' voprosy.
[1]
Nejasno kak ponimat' ekranirovanie: VMESTO odinarnykh kavychakh, ili VNUTRI ikh.
Esli vmesto, togda neverna fraza "uglovye i kruglye skobki razreshaetsja ne ekranirovat'",
ibo togda oni prevrashchajutsja v Refal-skobki. Esli zhe odinarnye kavychki neobkhodimy,
to eto nado skazat' voizbezhanie nedorazumenij. Naprimer, nado pisat' '/n' , a prosto /n - eto
sintaksicheskaja oshibka.
Rassmotrim takoe reshenie:
Ekranirovannye simvoly razreshajutsja kak vnutri, tak i vne odinarnykh kavychek.
Frazu "uglovye i kruglye skobki razreshaetsja ne ekranirovat'" udalit'.
[2]
Chem otlichajutsja f-ii ImplodeExt i ExplodeExt ot sushchestvujushchikh Implode i Explode?
[3] Pravil'no li ja ponimaju chto e.init v opredelenii TimeElapsed est' ili 0 ili pusto?
A chto esli napisat' 1 ? Error?
[4] Ja ne nashel opredelenija f-ii Sysfun v knizhke Refal-5. Gde ono? I pochemu takoe strannoe imja?
Luchshe by chto -to vrode "Write File", "ReadFil".
Best wishes. VT.
-----Original Message-----
From: Alexander P. Konyshev <shura@shura.botik.ru>
To: refal@botik.ru <refal@botik.ru>
Date: Wednesday, August 30, 2000 04:18 AM
Subject: Объявление
Синтаксис языка программирования Рефал-5 изменён
http://www.botik.ru/pub/local/scp/refal5/ .
-- Рефал-5 со старым синтаксисом не поддерживается.
-- Рефал-5 под операционной системой MS-DOS не поддерживается.
Краткое описание изменений синтаксиса:
-- после типа переменной всегда следует точка;
( Например, синтаксическая единица e1 является идентификатором, а не переменной. )
-- изменена семантика двойных кавычек " -- текст, заключённый в двойные
кавычки, есть имя составного символа. Все знаки (буквы) входящие в этот
текст представляют сами себя, за исключением специальных
экранируемых знаков. В частности, например, буквы чувствительны к регистру
( верхний/нижний ). Составной символ отождествляется с s-переменной.
"" -- две рядом стоящие двойные кавычки представляют собой
составной символ с пустым именем;
-- идентификатор есть частный случай составного символа.
Имя идентификатора всегда начинается с латинской буквы и может содержать
десятичные цифры, латинские буквы знак минуса - и знак подчёркивания _ .
Двойные кавычки обрамляющие имена идентификаторов разрешается опускать;
-- именами функций могут быть только идентификаторы без обрамляющих двойных кавычек;
-- имена всех встроенных и библиотечных функций ( существовавших в старом
синтаксисе ) начинаются с прописной буквы. Все остальные буквы в этих именах строчные.
( Например, Add, Explode )
-- текст заключённый в одинарные кавычки ' есть последовательность знаков
( characters ), представляющих самих себя, за исключением специальных
экранируемых знаков.
'' -- две рядом стоящие одинарные кавычки представляют собой пустое выражение ( ничто ).
-- специальные символы экранируются знаком \ (backslash) :
\n -- new line
\r -- carriage return
\t -- горизонтальная табуляция
\\ -- backslash
\' -- одинарная кавычка '
\" -- двойная кавычка "
\( -- круглая открывающая скобка (
\) -- круглая закрывающая скобка )
\< -- угловая открывающая скобка <
\> -- угловая закрывающая скобка >
\xHH -- символ соответствующий asscii коду HH,
где H -- шестнадцатиричная цифра
-- угловые и круглые скобки разрешается не экранировать.
Двойные кавычки внутри одинарных и одинарные кавычки внутри двойных
разрешается не экранировать.
-- cуществуют другие изменения в синтаксисе;
-- внесены изменения во встроенную функцию Type:
<Type e.Expr> ==> s.Type s.Subtype e.Expr1 ,
где e.Expr и e.Expr1 совпадают, а s.Type и s.Subtype зависят от вида
первого терма выражения-аргумента:
Тип. Подтип. Аргумент-выражение начинается
'L' 'u' с прописной латинской буквы;
'L' 'l' со строчной латинской буквы;
'D' 0 c десятичной цифры-знака ( не числа );
'W' 'i' c составного символа ( слова ),
который является идентификатором;
'W' 'q' c составного символа ( слова ),
который НЕ является идентификатором;
'N' 0 с макро-цифры;
'P' 'u' с печатного знака (character) в верхнем регистре;
'P' 'l' с печатного знака (character) в нижнем регистре;
'O' 'u' с любого другого знака (character) в верхнем регистре;
'O' 'l' с любого другого знака (character) в нижнем регистре;
'B' 0 со структурных скобок;
'*' 0 аргумент - пустое выражение ( ничто );
-- Реализована функция ImplodeExt:
<ImplodeExt e.characters> ==> s.compound-symbol
Принимает последовательность знаков (characters) и возвращает
составной символ, имя которого совпадает с данной последовательностью.
-- Реализована функция ExplodeExt:
<ExplodeExt s.compound-symbol> ==> e.characters
Принимает составной символ и возвращает последовательность знаков
(characters), которые составляют имя данного составной символа.
-- Реализована функция "точного" времени TimeElapsed:
<TimeElapsed e.init> ==> e.char-digits '.' e.char-digits
возвращает время прошедшее от предыдущего вызова этой же функции
с аргументом 0 ( макро-цифра ноль ). Если такого предыдущего вызова не
было, тогда функция возвращает время прошедшее с начала загрузки
rsl-модулей. Время выдаётся в секундах ( и их сотых частях ).
-- Реализована функция DeSysfun :
<DeSysfun e.file_name (s.number e.expression)> ==> e.empty /*nothing */
Эта функция выводит выражение e.expression в файл с именем e.file_name
максимальная длина строк в этом файле не превышает s.number .
Формат вывода совпадает с форматом поступающим на входной поток
функции Sysfun .
Верен нижеследующий предикат:
<DeSysfun e.file-name (s.number e.data)>: e.1,
<Sysfun e.file-name>: e.new-data, e.data : e.new-data
Александр Конышев.
This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:24:58 MSD