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
4.3.1. L'édition des références croisées
4.3.11.1. Présentation
4.3.11.2. L'exemple
4.3.11.3. Réalisation
4.3.11.4. Conclusion
4.3.2. L'élision
4.3.3. Annexe - références croisées
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.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

L'édition des références croisées

L'exemple traite des problèmes relatifs à l'édition d'un document "en langue naturelle", et plus particulièrement à la gestion des références multiples et croisées au sein d'un même texte. L'idée est de placer des étiquettes (labels) dans le texte, et de nommer ensuite symboliquement ces étiquettes pour se référer au numéro de page ou de ligne correspondant.

1. Présentation

2. L'exemple

3. Réalisation

4. Conclusion

3. Réalisation

Spécification

chaînes de caractères
Les retours à la ligne doivent être explicitement évalués, pour permettre le calcul des numéros de ligne et de page. De ce fait, on abandonne l'ancienne représentation des retours à la ligne : "^M".
(stg m) = indique un retour à la ligne
(stg p) = indique un saut de page

opérateurs
def-pge <num>
définit la pagination. <num> = numéro de la première page
def-lbl <nom>
définit une étiquette dans le texte de nom symbolique <nom>
use-pge <nom>
désigne l'utilisation du numéro de la page où figure l'étiquette de nom <nom>
use-lgn <nom>
identique à use-pge, mais pour le numéro de ligne

Implantation

chaînes de caractères
Concernant le retour à la ligne, il apparaît des défauts dans la spécification initiale :
- mauvaise spécification : le choix de la chaîne "^M" interdit de rendre explicite l'évaluation d'un retour à la ligne ;
- défaut de spécification : on introduit la notion de « saut de page » qui était jusqu'à présent ignorée.
De là il résulte les modifications qui suivent.

fonction d'évaluation de l'opérateur stg : evalt-stg
On y fait figurer l'interprétation des deux formes spécifiques (stg m) et (stg p).
fonction d'impression des atomes atm : imptt-ATM-atome
Le retour à la ligne n'est plus reconnu par "^M".
fonction d'impression de stg : imptt-stg et imptc-stg
On prend en compte ici l'impression des retours à la ligne ou des sauts de page.
fonctions d'impression évaluée externes : imp-eval, imp-lst-eval, imp-num-eval
On y initialise les compteurs de lignes et de pages.
fonction d'impression évaluée interne : imptt-atm-eval
On prend ici en compte l'impression évaluée des retours à la ligne ou des sauts de page pour la forme évaluée des textes.

opérateurs
Il s'agit essentiellement des quatre fonctions d'évaluation : evalt-def-pge, evalt-def-lbl, evalt-use-pge, evalt-use-lgn, lesquelles représentent en moyenne une ligne de code LISP. Les attributs sont directement calqués sur ceux de l'opérateur stg (« opérateur nommé » à un champ unique).