pcosmos.ca

le domaine de Philippe Choquette

Accueil Profil Contact Arrière plan
PCASTL
Half-Life
Informatique
OpenGL
Linux
Grow
Elements
Lecture
Liens

PCASTL
by Parent and Childset Accessible Syntax Tree Language

English page

Le PCASTL est un langage de programmation de haut niveau qui rend l'écriture de code automodifiant plus facile. Il présente trois caractéristiques pour atteindre ce but.

  • Le mot clé "parent" pour accéder à un noeud parent dans l'arbre syntaxique du code.
  • Le mot clé "childset" pour accéder à un noeud enfant dans l'arbre syntaxique du code.
  • L'usage de segments de code explicites délémités par ` et '.

Le PCASTL a été conçu pour être utilisé en intelligence artificielle. La nouvelle technique permise par le PCASTL est nommée Dynamic Syntax Tree Edition.

La version la plus récente est 1.9 et date du 2009-09-18.

Operateurs
Types de données
Fonctions internes
Structure de l'arbre
Traitement par lots
Exemples
Interpréteur

Exemples de base

L'exemple de session suivant démontre l'usage des mots clé et l'usage de la fonction interne info qui donne le type du noeud duquel elle reçoit la référence et quelques utiles informations à propos du noeud. Les énoncés PCASTL sont après les symboles '>' et les sorties de l'interpréteur sont dans les lignes qui commencent par des espaces.

> a = parent
        0x330878
> info(a)
        Node type: mathematical operator
        Number of childs: 2
        Operator: =
> info(a.childset[0])
        Node type: variable
        Name: "a"
> info(a.childset[1])
        Node type: list
        Number of items: 1
> info(a.childset[1].childset[0])
        Node type: "parent" reserved word
> a.childset[0].parent
        0x330878
> a.childset[1].parent
        0x330878

Après l'assignation d'une valeur à une variable, l'interpréteur retourne la valeur. L'adresse que nous voyons (0x330878) est dans ce cas l'adresse du noeud qui contient l'opérateur. Nous obtenons aussi une adresse quand nous définissons une fonction et quand nous déclarons un segment de code explicite. Le code que nous venons juste d'utiliser est illustré dans l'image ci-dessous.

Arbre simple

Une liste pointillée généalogique est une liste de mots clé "parent" et "childset" séparés par des points. Le mot clé "parent" seul est une liste pointillée généalogique d'un item.

La session suivante utilise une liste pointillée généalogique de deux items.

> a = parent.childset[1]
        0x330838
> info(a)
        Node type: list
        Number of items: 2
> info(a.childset[1])
        Node type: "childset" reserved word
> info(a.childset[1].childset[0])
        Node type: numerical constant
        Value: 1

La structure du premier énoncé de l'exemple précédent est illustrée ci-dessous.

Plus grand arbre