LSR | |
---|---|
clase de idioma |
multi- paradigma : |
tipo de ejecución | interpretado |
Apareció en | 1994 |
Autor | sergei kubrin |
extensión de archivo | ..mac |
Liberar | 1151 [1] ( 19 de marzo de 2015 ) |
sistema de tipos | dinámica |
Implementaciones principales | RS-Bank , InterBank, RS-Valores, RS-Pagos |
Sitio web | softlab.ru |
RSL u Object RSL ( abreviado del inglés R-Style Language ) es un lenguaje de programación propietario, interpretado, orientado a dominios y orientado a objetos desarrollado por R-Style Softlab para su uso en sus productos de software .
El entorno de desarrollo denominado "RSL Shell" incluye:
RSL también se denomina lenguaje de macros , y los programas basados en él se denominan macros . Las herramientas para crear y depurar programas RSL están disponibles para su descarga gratuita en el sitio del desarrollador; sin embargo, dichas macros no deben contener llamadas a módulos que contengan lógica comercial e integrados en los programas principales de R-Style Softlab. El intérprete está implementado bajo Windows , permite trabajar bajo Wine . Las primeras versiones admitían MS-DOS .
El soporte RSL está integrado en todos los subsistemas RS-Bank ABS , así como en InterBank, RS-Payments.
El módulo RSLSRV registra el objeto RSLSrv.RslEngine en el sistema, lo que le permite utilizar la macro RSL como un objeto ActiveX . Las macro variables globales se convierten en propiedades y los procedimientos se convierten en métodos. Por ejemplo, digamos que hay una macro myactivex.mac :
var str1: Cadena = "Cadena de prueba" ; macro func1(a) devuelve a*a; fin ;entonces puede usar el siguiente código de Visual Basic :
Sub TestRSL () Establecer eng = CreateObject ( "RSLSrv.RslEngine" ) Establecer MyObj = eng . LoadModule ( "myactivex.mac" ) Depuración . Imprimir MiObj . str1 ' imprime la cadena de prueba Debug . Imprimir MiObj . func1 ( 2 ) ' imprime 4 End SubRSD es una biblioteca diseñada para el acceso universal a fuentes de datos compatibles con SQL desde programas C++ y RSL . El modelo de objetos se basa en ADO .
La biblioteca tiene varios niveles (cada nivel subsiguiente se basa en el anterior: delega la mayor parte de la funcionalidad al nivel subyacente):
Los niveles 1 y 2 se implementan como DLL , mientras que el nivel 3 se implementa como DLM.
Windows Reports es una biblioteca orientada a objetos para generar informes en formatos de aplicaciones de oficina MS Excel , MS Word , Internet Explorer . La biblioteca se basa en tecnologías RSCOM y ActiveX . La mayor parte está escrita en RSL, también se incluyen módulos DLM.
RSL tiene soporte incorporado para trabajar con bases de datos (DB) administradas por Pervasive PSQL ( anteriormente Btrieve y Pervasive.SQL ). Los diccionarios de base de datos tienen la extensión .def(analógico .ddf), archivos de tabla de base de datos - .dbt(analógico .mkd). También es posible trabajar con archivos de bases de datos .dbf. El trabajo con SQL se organiza utilizando ADO a través del módulo RSLX y las bibliotecas RSD .
En términos de sintaxis, RSL comparte similitudes con C++ y Pascal . Por ejemplo, las operaciones de asignación y comparación "igual", "desigual" se escriben de la misma forma que en C++ ( =, ==, !=). Y las operaciones lógicas son como en Pascal ( and, or, not).
RSL (similar a C++ ) admite dos tipos de comentarios : de varias líneas y de una sola línea .
/* Un ejemplo de un comentario grande, que consta de varias líneas */ // El resto de la línea es un comentarioEl lenguaje RSL permite comentarios anidados de ambos tipos, tanto por separado como juntos.
Todos los tipos de datos admitidos en RSL se dividen en escalares y objetos.
Tipos escalares:
Tipos de objetos:
RSL proporciona conversión implícita y explícita de un tipo de datos a otro.
En 1997 RSL pasó a estar orientado a objetos y cambió su nombre a Object RSL [3] . Introduce clases que proporcionan las tres propiedades más importantes de la programación orientada a objetos (POO): encapsulación , herencia y polimorfismo .
ObjetosEn RSL (a diferencia de otros lenguajes de programación, por ejemplo, C++), la construcción de objetos ocurre en dos etapas:
Por lo tanto, los destructores definidos por el usuario no se utilizan en las clases RSL (los objetos y sus propiedades se eliminan automáticamente).
HerenciaEn RSL, la herencia le permite describir una nueva clase basada en una clase ya existente (principal, base). Por lo tanto, todos los métodos y propiedades de la clase principal también se convierten en métodos y propiedades de la clase secundaria. Además, la clase descendiente puede agregar sus propias propiedades y métodos o anular los métodos de la clase principal . La herencia le permite crear jerarquías de clases. La herencia múltiple está prohibida en RSL.
Al heredar, el nombre de la clase principal se especifica entre paréntesis después de la palabra clave Class. Para inicializar la clase principal, debe llamar a un método predefinido, cuyo nombre se forma agregando el prefijo al nombre de la clase principal Init.
Un ejemplo de herencia por parte de la clase Empleado ("Empleado") de la clase Persona ("Persona"), al agregarle la propiedad Puesto ("Puesto"):
Clase Persona (Nombre, Apellido) // Lista de propiedades y métodos de la clase Persona end ;En RSL, la encapsulación se implementa especificando el nivel de acceso a las propiedades y métodos de la clase, así como a las variables y procedimientos del macromódulo.
|
|
Niveles de acceso a las propiedades y métodos de la clase :
Acceso | locales (locales) |
Privado (privado) |
Global | Fuerza global |
En el aula | si / no | Sí | sí (a través del objeto de clase) |
Sí |
en herederos | No | Sí | sí (a través del objeto de clase) |
Sí |
Desde afuera | No | No | sí (a través del objeto de clase) |
Sí |
Niveles de acceso a variables , procedimientos y objetos de macromódulos :
Acceso | locales (locales) |
Privado (privado) |
Global | Fuerza global |
En un módulo de macros | si / no | Sí | Sí | Sí |
En los módulos que importan esto |
No | No | Sí | Sí |
Todos los métodos de las clases RSL son virtuales . Por lo tanto, RSL implementa el polimorfismo de inclusión (o polimorfismo puro) a través de la herencia. Si agrega un método en una clase derivada con un nombre que ya se usa para uno de los métodos de la clase principal, el método derivado anulará el método principal. Solo se accederá al método principal desde el método secundario que lo reemplaza. Este método padre se llama por su nombre. Pero en la clase descendiente, fuera del método anulado, no habrá acceso al método principal anulado. También será imposible acceder a este método de la clase padre a través de una referencia a un objeto de la clase hijo en la parte principal del programa.
Class First() // Clase principal Var x = 2 , y = 3 ;En este ejemplo, si el método se elimina de la clase principal Sum(), el método se llamará recursivamenteSum() en la clase descendiente .
No es necesario declarar variables y especificar su tipo. Los operadores de comparación tienen mayor precedencia que los operadores lógicos. Por ejemplo, si necesita realizar una "acción" en el caso de que la variable a sea igual a 1 o 2, debe aplicar la siguiente construcción:
if ((a == 1 ) o (a == 2 )) // fin de la acción ;La ejecución del programa comienza en la primera declaración que no forma parte de una clase o procedimiento, como en php .
función macro1 [Soy la función 1 ]; fin ; // la ejecución comienza aquí [¡Vamos!];Quine en RSL (formato para legibilidad):
s= "''s=Imprimir(SubStr(s,1,2)+StrFor(34)+s+StrFor(34)+StrFor(59)+SubStr(s,3));''" ; Imprimir ( SubStr (s, 1 , 2 )+ StrFor ( 34 )+s+ StrFor ( 34 )+ StrFor ( 59 )+ SubStr (s, 3 ));