XL | |
---|---|
Sprog klasse | multi-paradigme : imperativ |
Dukkede op i | 2000 |
Forfatter | Christoph De Dinechin [d] |
Frigøre | 0,1 (2010) |
Test version | 27-2010 |
Type system | streng |
Blev påvirket | Ada , C++ |
Licens | GPLv2 |
Internet side | xlr.sf.net |
OS | Unix-lignende operativsystem |
XL er grundlaget for det udvidelige sprog eXtensible Language. Det er et programmeringssprog designet til at understøtte konceptuel programmering .
XL giver syntaks og semantik, der kan udvides via programmering. Compiler plugins kan bruges til at tilføje nye funktioner til et sprog. Det grundlæggende sæt af plug-ins er implementeret i henhold til standard imperative sprog. Programmører kan skrive deres egne plugins for at implementere specifikke opgaver, såsom at arbejde med andre talsystemer, som senere blot kan indbygges i sproget.
XL definerer tre abstraktionsniveauer:
XL har hverken primitive typer eller reserverede ord. Alle anvendte operatorer og datatyper, såsom heltal eller additionsoperatoren, er deklareret i standardbiblioteket (XL2). XL1 er bærbar til at køre på tværs af forskellige miljøer og platforme. Men i XL2 er der ingen sådan garanti længere: Hvis en bestemt processor ikke understøtter multiplikation med flydende komma, kan beskrivelsen af den tilsvarende operator i standardbiblioteket springes over, og brugen af en sådan multiplikation kan resultere i en kompileringstid fejl.
Et eksempel på Hello World -program i XL ser sådan ud:
brug XL.TEXT_IO Skriv "Hej verden"En alternativ stavemåde i en stil, der er mere egnet til bredt skalerbare programmer, ville være:
import IO = XL.TEXT_IO IO.WriteLn "Hej verden"Syntaksen er defineret på XL0-niveau. XL0 kompileringstrinnet kan konfigureres ved hjælp af deskriptorfilsyntaks, som definerer, hvordan tekst præsenteres og tildeler operatørprioritet. Grundsyntaksfilen definerer almindelige matematiske notationer, såsom "+" for addition, som normalt bruges i rækkefølge efter operationer.
Det strukturelle træ indeholder 7 typer noder: 4 bladtype noder (heltal, reelt, tekst og symbol) og 3 interne type noder (infiks, præfiks og blok).
Med en standardsyntaksfil er følgende en gyldig XL0 uafhængig af enhver semantik.
A = B + "hej"Efter behandling vil det se sådan ud:
indeks("=", symbol("A"), index("+", symbol("B"), text("Hej")))