|
Accueil
Nouvelles
Profil
Contact
Half-Life
Musique
PCASTL
Informatique
Vidéos
Lecture
OpenGL
Éléments
sids du C64
Liens
|
|
Opérateurs
Types de données
Fonctions internes
Structure de l'arbre
Traitement par lots
Exemples
Interpréteur
|
|
PCASTL by Parent and Childset Accessible Syntax Tree Language Le PCASTL est un langage de programmation de haut niveau qui rend l'écriture de code automodifiant plus facile. Ses caractéristiques sont :
La version la plus récente est 3.5 et date du 2018-03-31. Alors, qu'est-ce qu'un arbre syntaxique? Par exemple, à l'intérieur de l'interpréteur, l'arbre ayant sa racine dans la variable fact après que ce code ait été exécuté : fact = function(x)
{
if (x == 1) return(1)
return(x * fact(x - 1))
}
est :
Ci-dessous vous pouvez voir comment les mots réservés childset et parent peuvent être utilisés pour explorer cet arbre. > info(fact) [node_type] "function definition" [nb_children] 2 [parameters][0] "x" > > info(fact.childset[0]) [node_type] "list" [nb_children] 1 > > info(fact.childset[0].childset[0]) [node_type] "variable" [nb_children] 0 [name] "x" > > info(fact.childset[1]) [node_type] "list" [nb_children] 2 > > info(fact.childset[1].childset[0]) [node_type] "if statement" [nb_children] 2 > > info(fact.childset[1].childset[1]) [node_type] "function call" [nb_children] 2 [nb_args] 1 > > info(fact.childset[0].parent) [node_type] "function definition" [nb_children] 2 [parameters][0] "x" Voici des façons de modifier l'arbre: > mknode(fact.childset[1], `if (x < 1) {
+ print("Parameter must be greater than zero.")
+ abort()
+ }', 0)
> fact(-2)
"Parameter must be greater than zero."
> info(fact.childset[1])
[node_type] "list"
[nb_children] 3
>
> info(fact.childset[1].childset[0].childset[1].childset[1])
[node_type] "function call"
[nb_children] 2
[nb_args] 0
>
> fact.childset[1].childset[0].childset[1].childset[1] = `return(-1)'
0x431c20
> info(fact.childset[1].childset[0].childset[1].childset[1])
[node_type] "function call"
[nb_children] 2
[nb_args] 1
>
> fact(-2)
"Parameter must be greater than zero."
-1
|