RSL

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску
RSL
Класс языка:

процедурный, объектно-ориентированный

Тип исполнения:

интерпретируемый

Появился в:

1994 г.

Автор(ы):

Сергей Кубрин

Последняя версия:

1121

Типизация данных:

динамическая

Основные реализации:

RS-Bank, RS-Portal, RS-Balance, RS-Forms

Диалекты:

[отсутствуют]

RSL — Проблемно-ориентированный проприетарный интерпретируемый язык программирования, разработанный компанией R-Style Softlab для использования в своих программных продуктах. В настоящее время в язык включена поддержка ООП и он упоминается также как Object RSL. Среда разработки включает в себя редактор, отладчик, прекомпилятор, редактор консольных диалоговых окон и структур БД Pervasive, редактор графических отчетов Visual RSL, SDK для создания подкючаемых модулей на C DLM SDK. RSL также называют макроязыком, а программы на нём макросами. Инструменты для создания и отладки программ на RSL доступны для свободного скачивания на сайте разработчика, однако такие макросы не должны содержать вызовов модулей, содержащих бизнес-логику и встроенных в основные программы R-Style. Интерпретатор реалиазован под Windows, позволяет работать под Wine. Ранние версии поддерживали MS DOS.

Файл:Rsltetris.png

Поддержка RSL встроена в RS-Bank и его модули, RS-Balance, RS-Portal.

С самого начала язык имеет встроенную поддержку работы с таблицами менеджера записей Btrieve (переименован в Pervasive PSQL). DBF файлы поддерживаются без учёта индексов. Работа с другими, в том числе SQL базами была организованна позднее через модуль RSLX и ADO или модуль RSD.

Hello world программа на RSL:

[Hello, world];[1]

Квайн на RSL (форматирование для удобства чтения):

s="s=Print(SubStr(s,1,2)+StrFor(34)+s+StrFor(34)+StrFor(59)+SubStr(s,3));";
     Print(SubStr(s,1,2)+StrFor(34)+s+StrFor(34)+StrFor(59)+SubStr(s,3));

История

  • 1994
  • 10.02.1997 Возможность подключения модулей на C, C++ (DLM-модулей).
  • 25.06.1997 Поддержка объектов создаваемых в среде выполнения RSL программ.
  • 10.07.1997 Первый Object RSL.
  • 16.03.1998 Стандартный класс TArray.
  • 21.04.1998 DLM-модуль RSLX для поддержки Microsoft ActiveX объектов.
  • 07.05.1998 Стандартный класс TBFile.
  • 21.05.1998 Обработка ошибок при помощи конструкции OnError и класса TrslError.
  • 25.04.2001 Процедуры для взаимодействия с отладчиком.
  • 29.11.2001 Интеграция в RSL расширения для работы с терминалом и новые универсальные функции для работы с файлами как на стороне сервера, так и на стороне терминала.
  • 23.05.2002 Базовая поддержка RSCOM в стандартном модуле RCW.
  • 16.04.2003 Поддержка модулей платформы .NET.
  • 27.05.2005 Наконец-то появился цикл for.

Модули языка

RSLSRV

Модуль RSLSRV регистрирует в системе объект RSLSrv.RslEngine, который позволяет использовать макрос на RSL как объект ActiveX. Глобальные переменные макроса становятся свойствами, а процедуры — методами. Например, пусть существует макрос myactivex.mac:

var str1:String="Test string";
macro func1(a)
    return a*a;
end;

тогда можно использовать следующий код на Visual Basic:

Sub TestRSL()
    Set eng = CreateObject("RSLSrv.RslEngine")
    Set MyObj = eng.LoadModule("myactivex.mac")
    Debug.Print MyObj.str1     ' печатает Test string
    Debug.Print MyObj.func1(2) ' печатает 4
End Sub

RSD


RSLX


RsEngine


Windows Reports

Windows Reports — Оъектно-ориентированная библиотека для вывода отчётов в форматы офисных приложений MS Excel, MS Word, Internet Explorer. Библиотека основана на технологиях RSCom и ActiveX. Большая часть написана на RSL, также в состав входят dlm-модули.

Особенности языка

В целом, синтаксис языка прост и понятен программистам, знакомым с языками Pascal и Visual Basic. В языке отсутствует оператор goto. Объявлять переменные и указывать их тип не обязательно. Операторы сравнения имеют более высокий приоритет, чем логические операторы. Например, если надо выполнить действие если переменная a равна 1 или 2, то необходимо применить следующую конструкцию:

if ((a==1) or (a==2))
    //действие
end;

Выполнение программы начинается с первой инструкции, не входящей в класс или процедуру, как в php.

macro func1
   [I'm function 1];
end;
//выполнение начнётся здесь
[Hello, world];

Отсутствует конструкция, позволяющая инициализировать массив, однако можно воспользоваться функцией. Пример:

macro GetArray()
    var aRet=TArray(Parmcount());
    var i:integer;
 
    for (i,0,Parmcount()-1)
        GetParm(i,aRet[i]);
    end;
    return aRet;
end; /* macro GetArray */
   
var MyArray=GetArray(1,"Элемент 2",GetArray(1,2,3),$4,null);

В результате переменная MyArray будет содержать массив из пяти элементов, причём третьим элементом будет массив.

См. также

Примечания

Ссылки


Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....