RSL | |
---|---|
Sprog klasse |
multi- paradigme : |
Udførelsestype | fortolket |
Dukkede op i | 1994 |
Forfatter | Sergey Kubrin |
Filtypenavn _ | ..mac |
Frigøre | 1151 [1] ( 19. marts 2015 ) |
Type system | dynamisk |
Større implementeringer | RS-Bank , InterBank, RS-Securities, RS-Payments |
Internet side | softlab.ru |
RSL eller Object RSL ( forkortelse fra det engelske R-Style Language ) er et objektorienteret , domæneorienteret , fortolket , proprietært programmeringssprog udviklet af R-Style Softlab til brug i dets softwareprodukter .
Udviklingsmiljøet kaldet "RSL Shell" inkluderer:
RSL kaldes også et makrosprog , og programmer baseret på det kaldes makroer . Værktøjer til oprettelse og fejlretning af RSL-programmer er tilgængelige til gratis download på udviklerens websted, men sådanne makroer bør ikke indeholde opkald til moduler, der indeholder forretningslogik og indbygget i de vigtigste R-Style Softlab-programmer. Tolken er implementeret under Windows , giver dig mulighed for at arbejde under Wine . Tidlige versioner understøttede MS-DOS .
RSL-understøttelse er indbygget i alle RS-Bank ABS -undersystemer såvel som InterBank, RS-Payments.
RSLSRV - modulet registrerer RSLSrv.RslEngine-objektet i systemet, hvilket giver dig mulighed for at bruge RSL-makroen som et ActiveX -objekt . Makro globale variabler bliver til egenskaber, og procedurer bliver til metoder. Lad os f.eks. sige, at der er en makro myactivex.mac :
var str1: String = "Test streng" ; makro func1(a) returner a*a; ende ;så kan du bruge følgende Visual Basic -kode :
Sub TestRSL () Indstil eng = CreateObject ( "RSLSrv.RslEngine" ) Indstil MyObj = eng . LoadModule ( "myactivex.mac" ) Debug . Udskriv MyObj . str1 ' udskriver Teststreng Debug . Udskriv MyObj . func1 ( 2 ) ' udskriver 4 End SubRSD er et bibliotek designet til universel adgang til SQL -understøttende datakilder fra C++ og RSL - programmer . Objektmodellen er baseret på ADO .
Biblioteket har flere niveauer (hvert efterfølgende niveau er baseret på det foregående: det delegerer det meste af funktionaliteten til det underliggende niveau):
Niveau 1 og 2 er implementeret som DLL'er , mens niveau 3 er implementeret som DLM'er.
Windows Reports er et objektorienteret bibliotek til udsendelse af rapporter til kontorapplikationsformater MS Excel , MS Word , Internet Explorer . Biblioteket er baseret på RSCOM- og ActiveX -teknologier . Det meste er skrevet i RSL, DLM-moduler er også inkluderet.
RSL har indbygget understøttelse til at arbejde med databaser (DB) styret af Pervasive PSQL ( tidligere Btrieve og Pervasive.SQL ). Databaseordbøger har filtypenavnet .def(analog .ddf), databasetabelfiler - .dbt(analog .mkd). Det er også muligt at arbejde med databasefiler .dbf. Arbejdet med SQL er organiseret ved hjælp af ADO gennem RSLX- modulet og RSD - bibliotekerne .
Med hensyn til syntaks deler RSL ligheder med C++ og Pascal . For eksempel er opgave- og sammenligningsoperationerne "lige", "ulige" skrevet på samme måde som i C++ ( =, ==, !=). Og logiske operationer er ligesom i Pascal ( and, or, not).
RSL (svarende til C++ ) understøtter to typer kommentarer : multi-line og single-line .
/* Et eksempel på en stor kommentar, bestående af flere linjer */ // Resten af linjen er en kommentarRSL-sproget tillader indlejrede kommentarer af begge typer, både hver for sig og sammen.
Alle understøttede datatyper i RSL er opdelt i skalar og objekt.
Skalære typer:
Objekttyper:
RSL giver implicit og eksplicit konvertering fra én datatype til en anden.
I 1997 blev RSL objektorienteret og ændrede navn til Object RSL [3] . Den introducerer klasser, der giver de tre vigtigste egenskaber ved objektorienteret programmering (OOP): indkapsling , arv og polymorfi .
ObjekterI RSL (i modsætning til andre programmeringssprog, for eksempel C++), foregår objektkonstruktionen i to trin:
Brugerdefinerede destruktorer bruges således ikke i RSL-klasser (objekter og deres egenskaber slettes automatisk).
ArvI RSL giver arv dig mulighed for at beskrive en ny klasse baseret på en allerede eksisterende (overordnet, basis) klasse. Således bliver alle metoder og egenskaber i den overordnede klasse også metoder og egenskaber for den underordnede klasse. Derudover kan efterkommerklassen tilføje sine egne egenskaber og metoder eller tilsidesætte metoderne for den overordnede klasse . Arv giver dig mulighed for at opbygge klassehierarkier. Multipel arv er forbudt i RSL.
Ved nedarvning angives navnet på den overordnede klasse i parentes efter nøgleordet Class. For at initialisere den overordnede klasse skal du kalde en foruddefineret metode, hvis navn dannes ved at tilføje præfikset til navnet på den overordnede klasse Init.
Et eksempel på arv fra klassen Medarbejder ("Medarbejder") af klassen Person ("Person"), når ejendommen Post ("Position") tilføjes:
Klasse Person (navn, efternavn) // Liste over egenskaber og metoder for Person-klassens slut ;I RSL implementeres indkapsling ved at specificere adgangsniveauet til klassens egenskaber og metoder samt til makromodulets variabler og procedurer.
|
|
Adgangsniveauer til klasseegenskaber og metoder :
Adgang | Lokal (lokal) |
Privat (privat) |
Global | Kraft globalt |
I klasseværelset | ja / nej | Ja | ja (via klasseobjekt) |
Ja |
I arvinger | Ingen | Ja | ja (via klasseobjekt) |
Ja |
Udefra | Ingen | Ingen | ja (via klasseobjekt) |
Ja |
Adgangsniveauer til variabler , procedurer og makromodulobjekter :
Adgang | Lokal (lokal) |
Privat (privat) |
Global | Kraft globalt |
I et makromodul | ja / nej | Ja | Ja | Ja |
I moduler, der importerer dette |
Ingen | Ingen | Ja | Ja |
Alle metoder til RSL-klasser er virtuelle . Således implementerer RSL inklusionspolymorfi (eller ren polymorfi) gennem arv. Hvis du tilføjer en metode i en afledt klasse med et navn, der allerede er brugt til en af metoderne i den overordnede klasse, vil den afledte metode tilsidesætte den overordnede metode. Den overordnede metode vil kun blive tilgået fra den underordnede metode, der tilsidesætter den. Denne overordnede metode kaldes ved sit navn. Men i descendant-klassen, uden for den tilsidesættende metode, vil der ikke være adgang til den tilsidesatte overordnede metode. Det vil også blive umuligt at få adgang til denne metode for den overordnede klasse gennem en henvisning til et objekt fra den underordnede klasse i programmets hoveddel.
Klasse First() // Forældreklasse Var x = 2 , y = 3 ;I dette eksempel, hvis metoden er fjernet fra den overordnede klasse Sum(), vil metoden blive kaldt rekursivtSum() i den descendant klasse .
Det er ikke nødvendigt at deklarere variabler og angive deres type. Sammenligningsoperatorer har højere forrang end logiske operatorer. For eksempel, hvis du skal udføre en "handling" i det tilfælde, hvor variablen a er lig med 1 eller 2, skal du anvende følgende konstruktion:
hvis ((a == 1 ) eller (a == 2 )) // handling ende ;Programudførelse starter ved den første sætning, der ikke er en del af en klasse eller procedure, som i php .
makro funktion1 [Jeg er funktion 1 ]; ende ; // udførelsen starter her [Lad os gå!];Quine på RSL (formatering for læsbarhed):
s= "''s=Print(SubStr(s,1,2)+StrFor(34)+s+StrFor(34)+StrFor(59)+SubStr(s,3));''" ; Udskriv ( SubStr (s, 1 , 2 )+ StrFor ( 34 )+s+ StrFor ( 34 )+ StrFor ( 59 )+ SubStr (s, 3 ));