XL | |
---|---|
Språkklass | multiparadigm : imperativ |
Framträdde i | 2000 |
Författare | Christoph De Dinechin [d] |
Släpp | 0,1 (2010) |
Testversion | 2010-02-27 |
Typ system | sträng |
Blivit påverkad | Ada , C++ |
Licens | GPLv2 |
Hemsida | xlr.sf.net |
OS | Unix-liknande operativsystem |
XL är grunden för det utvidgbara språket eXtensible Language. Det är ett programmeringsspråk utformat för att stödja konceptuell programmering .
XL tillhandahåller programmatiskt utvidgbar syntax och semantik. Kompilatorplugins kan användas för att lägga till nya funktioner till ett språk. Den grundläggande uppsättningen av plugin-program implementeras enligt standardimperativspråk. Programmerare kan skriva sina egna plugins för att implementera specifika uppgifter, som att arbeta med andra nummersystem, som senare enkelt kan byggas in i språket.
XL definierar tre abstraktionsnivåer:
XL har varken primitiva typer eller reserverade ord. Alla operatorer och datatyper som används, såsom heltal eller additionsoperatorn, deklareras i standardbiblioteket (XL2). XL1 är portabel för att köras över olika miljöer och plattformar. Men i XL2 finns det ingen sådan garanti längre: om en viss processor inte stöder flyttalsmultiplikation, kan beskrivningen av motsvarande operator i standardbiblioteket hoppas över och användningen av en sådan multiplikation kan resultera i en kompileringstid fel.
Ett exempel på Hello World- program i XL ser ut så här:
använd XL.TEXT_IO Skriv "Hej världen"En alternativ stavning i en stil som är mer lämpad för brett skalbara program skulle vara:
import IO = XL.TEXT_IO IO.WriteLn "Hello World"Syntaxen definieras på XL0-nivån. XL0-kompileringssteget kan konfigureras med hjälp av deskriptorfilsyntax, som definierar hur text presenteras och tilldelar operatörsprioritet. Bassyntaxfilen definierar vanliga matematiska notationer, såsom "+" för addition, som vanligtvis används i operationsordning.
Det strukturella trädet innehåller 7 typer av noder: 4 lövtypsnoder (heltal, reellt, text och symbol) och 3 interna typnoder (infix, prefix och block).
Med en standardsyntaxfil är följande en giltig XL0 oberoende av eventuell semantik.
A = B + "hej"Efter bearbetning kommer det att se ut så här:
index("=", symbol("A"), index("+", symbol("B"), text("Hej")))