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

1. Les structures de données

On travaille toujours sur des listes triées. La différence qu'on observe entre [1] et [2] est que le premier utilise un fichier et le second un tableau. Cette différence pouvant vraisemblablement se reproduire, on définit en premier ces deux choix de représentation des données dans un texte commun : le texte comm.

(def comm
   ((def fic
    / fic = fichier : le rang physique RGPHY reçoit la conversion du rang logique CONV-RGLOG /
    ((def lect ()
    / lect : on recherche, dans le fichier ouvert sous le numéro logique NUM-LOG et au rang physique RGPHY, la valeur stockée, retournée dans VAL /
    ("{RGPHY}={CONV-RGLOG}
  SEARCH={NUM-LOG},{RGPHY}:{VAL}"))
     (def ecr ()
    / ecr : on modifie, dans le fichier ouvert sous le numéro logique NUM-LOG et au rang physique RGPHY, la valeur stockée par une nouvelle valeur VAL /
    ("{RGPHY}={CONV-RGLOG}
  MODIF={NUM-LOG},{RGPHY}:{VAL}"))
     (def ins ()
    / ins : on insère, dans le fichier ouvert sous le numéro logique NUM-LOG et à un nouveau rang physique RGPHY, la valeur VAL /
    ("{RGPHY}={CONV-RGLOG}
  INSERT={NUM-LOG},{RGPHY}:{VAL}"))
     (def supp ()
    / supp : on supprime, dans le fichier ouvert sous le numéro logique NUM-LOG, la valeur stockée au rang physique RGPHY /
    ("{RGPHY}={CONV-RGLOG}
  DELETE={NUM-LOG},{RGPHY}"))
    ))
    (def tab
    / tab = tableau /
    ((def lect ()
    / lect : on retourne dans VAL la valeur du rang logique VAL-RGLOG /
    ("{VAL}={VAL-RGLOG}"))
     (def ecr ()
    / ecr : on modifie la valeur au rang logique VAL-RGLOG par la valeur VAL /
    ("{VAL-RGLOG}={VAL}"))
    ))
   ))

On dégage ainsi les propriétés de comm :

(ref fic ((comm)))
 paramètres :
  
RGPHY : rang physique
CONV-RGLOG : conversion du rang logique en rang physique
NUM-LOG : numéro logique du fichier ouvert
VAL : valeur du type des éléments (lue, écrite, insérée)
 propriétés :
  
lect : lecture
ecr : écriture
ins : insertion
supp : suppression
(ref tab ((comm)))
 paramètres :
  
VAL-RGLOG : conversion du rang logique en une valeur
VAL : valeur (lue, écrite)
 propriétés :
  
lect : lecture
ecr : écriture