4. Attributs de phylum
traitement nul
C'est le traitement appelé à l'occurrence d'un opérateur qui n'est pas attendu dans le phylum dans lequel on se place. Ce sera vraisemblablement un cas d'erreur.
traitement des atomes
C'est le traitement réservé aux atomes Lisp dans le phylum.
L'argument de la fonction est alors l'atome lui-même.
traitement des listes
C'est le traitement réservé aux listes dans le phylum, c'est-à-dire aux listes dont le premier élément (le préfixe de la liste) n'est pas le nom d'un opérateur. Ce sera encore souvent un traitement d'erreur.
L'argument de la fonction est ici un pointeur sur la liste – il y a donc autant d'arguments à l'appel de la fonction que d'éléments dans la liste.
On définit des traitements pour :
- la recherche,
- la complétion,
- l'impression, nécessairement complète,
- l'entrée dans les champs d'un opérateur,
- la sortie des champs d'un opérateur,
- l'impression évaluée.
On constate en particulier qu'on n'a pas d'attribut de phylum pour l'évaluation. Ceci se comprend bien : l'évaluation d'un objet Lisp est en effet appelée soir par l'opérateur lsp soit par l'évaluateur Lisp, dans la phase d'évaluation d'une S-ex définie dans lsp. Il est donc inutile de définir une fonction d'évaluation pour les cas exceptionnels (nul, atome, liste) qui ne serait alors jamais appelée.
Remarque :
De ce qui précède, on peut conclure :
- le traitement appelé sur un opérateur est généralement celui qui est défini pour cet opérateur : il est donc indépendant du phylum dans lequel on évalue ;
- les traitements des cas exceptionnels (nul, atome, liste) sont définis pour le phylum dans lequel on évalue, indépendamment des opérateurs.
Pour reprendre l'exemple des environnements fixes env-fix :
- dans le phylum
TRM-FIX on attend une définition def mais pas une référence ref ;
- mais à l'occurrence d'une définition
def on appelle un traitement identique à celui qu'on aurait appelé en se plaçant dans le phylum TRM.
On peut se demander s'il s'agit d'un avantage ou d'une limitation.