PCASTL
Paradigm | imperativ , reflekterande |
---|---|
Designad av | Philippe Choquette |
Utvecklare | Philippe Choquette |
Dök först upp | 2008 |
Stabil frisättning | 3.5 / 31 mars 2018
|
OS | Cross-plattform |
Licens | GNU Lesser General Public License |
Hemsida | |
Influerad av | |
C , R |
PCASTL (en akronym för Parent and Childset Accessible Syntax Tree Language ) är ett tolkat programmeringsspråk på hög nivå . Den skapades 2008 av Philippe Choquette. PCASTL är utformad för att underlätta skrivningen av självmodifierande kod . Språket har reserverat ord förälder och barnuppsättning för att komma åt noderna i syntaxträdet för den för närvarande skrivna koden.
Hej världen
" Hej världen-programmet " är ganska enkelt:
"Hej världen!"
eller
print("Hej världen!")
kommer att göra detsamma.
Syntax
Syntaxen för PCASTL härleds från programmeringsspråken C och R . Källan till R version 2.5.1 har studerats för att skriva grammatiken och lexern som används i PCASTL-tolken.
Influenser
Liksom i R kan påståenden, men behöver inte, separeras med semikolon . Liksom i R kan en variabel ändra typ i en session . Precis som i C och R använder PCASTL balanserade parenteser ( { och } ) för att skapa block .
Operatörer som finns i PCASTL har samma företräde och associativitet som deras motsvarigheter i C . för slingor definieras som i C . ++
och --
operatorer används som i C för att öka eller minska en variabel före eller efter att den används i dess uttryck.
Ett exempel på PCASTL som använder det reserverade ordet för och ++
operatorn :
för ( i = 1 ; i < 4 ; i ++ ) skriv ut ( i )
Funktioner och kommentarer i PCASTL definieras som i R :
# funktionsdefinition (kommentar) a = funktion () { print ( "Hej världen!" ) } # funktionsanrop a ()
reserverade ord för förälder och barn
Dessa reserverade ord kan bara skrivas med små bokstäver och kommer inte att kännas igen annars. Det överordnade reserverade ordet ger en referens till föräldranoden i syntaxträdet för koden där ordet är placerat. I följande kod är den överordnade noden operatorn =
.
a = förälder
Variabeln "a" kommer att innehålla en referens till =
-noden . Följande kod visar hur man får referenser till de två underordnade noderna för operatorn =
med det reserverade barnets ord .
a.childset[0] a.childset[1]
För att visa värdet på "a" ges några sätt i detta exempel:
a.childset[0].parent a.childset[1].parent a.childset[0].parent.childset[0].parent # och så vidare...
I följande kod: vi tilldelar ett kodsegment till det högra underordnade av =
-noden, vi kör =
-noden en andra gång och vi anropar den nydefinierade funktionen.
a.childset[1] = `function() print("hej")' exekvera(a) a()