1. Introduction
C'est la fonction d'évaluation des textes. L'évaluation des textes étant activée soit par une demande explicite soit par l'évaluateur Lisp, on définit une "passerelle" entre ces deux évaluateurs : ce sont les fonctions définies.
fonctions définies
Pour un opérateur de nom oper de fonction d'évaluation evalt-oper :
On définit la F-expr :
(df oper arg
(apply 'evalt-oper arg))
La représentation interne de l'opérateur est une liste dont le premier élément est le nom oper :
(oper ...)
Ainsi, l'évaluateur Lisp activera nécessairement l'appel de la fonction d'évaluation evalt-oper sur la liste des arguments de l'opérateur non évalués.
Parce que le besoin s'en est fait sentir, on définit aussi une fonction qui teste si une liste représente un opérateur donné : pour un opérateur de nom oper :
On définit la F-expr :
(de operp (loc)
(eq 'oper (car loc)))
Cette fonction teste si le préfixe de la liste (le "car") est égal au nom de l'opérateur.
variables héritées
A l'activation de la fonction d'évaluation, on a la visibilité de la variable ctx qui a pour valeur le contexte courant d'évaluation.
fonctions utilisateur
cons-env ‹env1› ... ‹envN›
‹env1› ... ‹envN› qui sont aplatis, excepté le dernier environnement ‹envN›.flat-env ‹env›
‹env› aplati.C'est la fonction qui recherche une définition dans un contexte d'évaluation. Comme il a été dit, la fonction de recherche n'est peut-être pas un attribut bien spécifique des opérateurs. Pour ce qui est de la syntaxe initiale, cet attribut n'est utilisé qu'à l'intérieur d'un environnement, autrement dit depuis le phylum des termes TRM.
variables héritées
A l'appel de la fonction de recherche, on a la visibilité de la variable nom qui est le nom du texte qu'on recherche.
fonction utilisateur
recht ‹nom›
‹nom› dans le contexte d'évaluation représenté par la variable ctx (qui doit être visible).C'est la fonction qui complète une liste pour construire une liste conforme à la représentation interne des données. Par exemple :
(txt)
sera complétée en :
(use txt (env))
On a deux fonctions d'impression :
variables héritées
Elles sont au nombre de trois :
variable : holo
variable : tab
variable : etat
SEP = séparateur,EFF = effacement,RTN = retour à la ligne.Les changements d'états sont représentés sur la figure :
|
|
SEP = faux | : | aucun affichage de séparateur, SEP devient vrai ; |
EFF = vrai | : | on affiche le séparateur, puis on inverse le champ RTN ; EFF devient faux ; |
RTN = faux | : | le séparateur est un blanc ; |
RTN = vrai | : | le séparateur est un retour à la ligne. |
fonctions utilisateur
print-deb ‹arg1› ... ‹argN›
print-RTN ‹arg1› ... ‹argN›
print-noRTN ‹arg1› ... ‹argN›
print-tab ‹tab›
‹tab› blancs (la tabulation).Il reste trois attributs, qui sont présentés dans le paragraphe traitant de l'éditeur ligne. Il s'agit de :