afficher >><< masquer ]
SAMPI - Editeur structuré
1. Le Problème et la Proposition
2. Le Langage Primitif de Représentation Textuelle
2.1. Présentation de la Syntaxe Concrète
2.2. Notations
2.3. Exemple de structuration des données
2.4. Exemple de structuration des traitements
2.5. Exemple de structurations connexes
3. Le Langage Complété pour la Structuration des Textes
3.1. Présentation de la Syntaxe Complétée
3.2. Etude quantitative de l'évolution des programmes
3.3. L'édition syntaxique
3.4. étude de cas : le langage LTR3 et l'atelier ENTREPRISE
4. L'Enrichissement du Langage par de Nouveaux Concepts
4.1. Présentation de la Syntaxe Abstraite
4.2. Les difficultés
4.3. Compléter la Syntaxe
5. La Formalisation des Solutions Techniques
5.1. L'évaluation fonctionnelle
5.2. La structuration par les objets
5.3. Modèle sémantique comparé de l'évaluateur
5.4. Comparaison critique
5.5. Construction de la Syntaxe Abstraite
6. Les Comparaisons avec d'autres Approches
7. Les Perspectives
8. Les Editeurs
8.0. brisé sur la barrière de la complexité (une fois de plus)
8.1. L'éditeur ligne : Manuel de l'utilisateur
8.2. L'éditeur page : Guide de l'utilisateur
9. Les Aspects d'Implantation
9.1. Contexte d'évaluation
9.2. La Syntaxe Abstraite : Manuel du concepteur
9.2.1. Attributs de la syntaxe abstraite
9.2.11.1. Introduction
9.2.11.2. Evaluation des attributs
9.2.11.3. Attributs d'opérateurs
9.2.11.4. Attributs de phylum
9.2.11.5. Syntaxe concrète
9.2.11.6. Attributs d'opérateurs dans l'éditeur ligne
9.2.2. La Syntaxe Initiale
9.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

Attributs de la syntaxe abstraite

1. Introduction

2. Evaluation des attributs

3. Attributs d'opérateurs

4. Attributs de phylum

5. Syntaxe concrète

6. Attributs d'opérateurs dans l'éditeur ligne

3. Attributs d'opérateurs

3.1. évaluation

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›

construit le contexte d'évaluation formé des environnements ‹env1› ... ‹envN› qui sont aplatis, excepté le dernier environnement ‹envN›.

flat-env ‹env›

retourne l'environnement ‹env› aplati.

3.2. recherche

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›

recherche le texte de nom ‹nom› dans le contexte d'évaluation représenté par la variable ctx (qui doit être visible).

3.3. complétion

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))

3.4. impression

On a deux fonctions d'impression :

variables héritées

Elles sont au nombre de trois :

variable : holo

C'est l'holophraste : elle permet de mesurer à quelle profondeur on se situe dans l'arbre imprimé, et de ne réaliser éventuellement qu'une impression partielle.

variable : tab

C'est la tabulation : 0 = début de ligne.

variable : etat

C'est, comme son nom l'indique, une variable d'état. Elle est composée de trois champs booléens – c'est une liste à trois éléments :
- SEP = séparateur,
- EFF = effacement,
- RTN = retour à la ligne.

Les changements d'états sont représentés sur la figure :

SEP
EFF
RTN

Changements d'états

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›

imprime les arguments, après avoir tenu compte de l'état.

print-RTN ‹arg1› ... ‹argN›

imprime les arguments, en forçant localement un retour à la ligne.

print-noRTN ‹arg1› ... ‹argN›

imprime les arguments, en forçant localement "pas de retour à la ligne".

print-tab ‹tab›

imprime un retour à la ligne, puis ‹tab› blancs (la tabulation).

3.5. autres attributs

Il reste trois attributs, qui sont présentés dans le paragraphe traitant de l'éditeur ligne. Il s'agit de  :