Pour les inconditionnels, cette section présente les fonctions Perl et Javascript qui implémentent la syntaxe présentée.
1. Syntaxe de l'éditeur structuré
Définition de texte : def
Un « texte » :
(def nom env rep)
est représenté par :
/#( nom : rep env /#)
où env est une liste d'attributs déclarés pour le « texte » nom de la forme :
/# attr1 = rep1
/# attr2 = rep2
...
La forme générale d'un « texte » sera donc :
/#( nom : rep /# attr1 = rep1 /# attr2 = rep2 ... /#)
Utilisation de texte : use
Une utilisation de « texte » :
(use nom)
est représentée dans une valeur de représentation par :
[# nom ]
Une utilisation sélective d'un attribut de « texte », rapportée à un attribut déclaré :
/# attr = cas ? rep1 : rep2
est représentée par :
[# attr = casUse ]
et est évaluée :
rep1 : si casUse = cas
rep2 : si casUse ≠ cas
Une utilisation optionnelle d'un « texte » est représentée par :
[? nom : rep ?]
et est évaluée :
rep : si nom ≠ (vide) (plus précisément si [#nom] ≠ (vide))
(vide) : si nom = (vide)
Exemple
Dans l'environnement :
/#(decl:local [?deux:(?][#un][?deux:,[#deux])?];/#)
/#(decl1:[#decl]/#un=$x/#)
/#(decl2:[#decl]/#un=$x/#deux=$y/#)
on évalue :
[#decl1] s'évalue : local $x;
[#decl2] s'évalue : local ($x,$y);