Объявлени


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