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.3.1. Présentation générale
2.3.2. Présentation détaillée
2.3.3. Première étape : le modèle générique
2.3.33.1. Les structures de données
2.3.33.2. Les contextes d'utilisation
2.3.33.3. Les traitements simples
2.3.33.4. Les traitements complexes
2.3.4. Deuxième étape : les nouveaux cas
2.3.5. Annexe 1 : exemple d'évaluation
2.3.6. Annexe 2 : les procédures de recherche
2.3.7. Annexe 3 : la représentation textuelle
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.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

Première étape : le modèle générique

Dans cette première étape, on ne retient que les deux premiers types de structures de données : [1] et [2]. Reconnaissant, malgré la distance entre ces deux types, qu'on va devoir écrire deux fois le même "genre" de modules, on peut souhaiter paramétrer un module générique unique puis instancier chaque cas avec ses particularités.

1. Les structures de données

2. Les contextes d'utilisation

3. Les traitements simples

4. Les traitements complexes

3. Les traitements simples

On peut maintenant construire les procédures génériques Lire_Objet et Ecrire_Objet :

(def Lire ()
   ("* Lire_Objet: M:IN integer; {val((OBJ))}:OUT type_element
     100   {lect ((RANG)
                  (def RGLOG () ("M"))
                  (def VAL   () ("{val((OBJ))}")))}
           RETURN"))
(def Ecrire ()
   ("* Ecrire_Objet: M:IN integer; {val((OBJ))}:IN type_element
     110   {ecr ((RANG)
                 (def RGLOG () ("M"))
                 (def VAL   () ("{val((OBJ))}")))}
           RETURN"))

Lire et Ecrire sont paramétrés par  :

Le choix des noms de textes permet de facilement générer le texte final :

Cas [1]
(Lire   ((ctx1)))
(Ecrire ((ctx1)))

Cas [2]
(Lire   ((ctx2)))
(Ecrire ((ctx2)))

Dans les deux cas, on utilise le schéma Lire ou Ecrire en fournissant le contexte de décompilation, ctx1 ou ctx2.

On obtient (en annexe, on donne les étapes de cette évaluation) :

Cas [1]

* Lire_Objet: M:IN integer; X1:OUT type_element
100   H=RG1(M)
      SEARCH=1,H:X1
      RETURN
* Ecrire_Objet: M:IN integer; X1:IN type_element
110   H=RG1(M)
      MODIF=1,H:X1
      RETURN

Cas [2]

* Lire_Objet: M:IN integer; X2:OUT type_element
100   X2=TX2(M)
      RETURN
* Ecrire_Objet: M:IN integer; X2:IN type_element
110   TX2(M)=X2
      RETURN