Subject: Объявлени
From: Alexander P. Konyshev (shura@shura.botik.ru)
Date: Wed Aug 30 2000 - 11:27:47 MSD
    Синтаксис языка программирования Рефал-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