Re: Объявлени


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