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.4.1. La pile
2.4.11.1. Généricité en LTR3
2.4.11.2. La forme générique de la pile
2.4.11.3. Les deux instanciations
2.4.11.4. Conclusion
2.4.11.5. La représentation « textuelle »
2.4.2. Les lecteurs-écrivains
2.4.3. La racine carrée
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

La pile

Le domaine d'intérêt des travaux touchant le Génie Logiciel, il paraît bien naturel de présenter l'exemple de la pile. On s'intéresse cependant plus ici au mode d'implantation de la pile qu'à sa qualité de type abstrait de données générique.

1. Généricité en LTR3

2. La forme générique de la pile

3. Les deux instanciations

4. Conclusion

5. La représentation « textuelle »

3. Les deux instanciations

Dans la première instanciation, on réalise la pile par l'utilisation d'un tableau et d'un indice qui sert de pointeur de pile. On réalise la seconde par une liste chaînée.

La définition du type est "logiquement" rattachée au corps du module, mais "réellement" donnée dans son interface – le langage l'impose pour simplifier le travail du compilateur.

1ère instanciation 2ème instanciation
TYPE pileRep:
   RECORD
      a : ARRAY[1..100] OF element;
      b : integer;
   END RECORD;
 
TYPE pileRep: REFERENCE listeRep;
TYPE listeRep: RECORD
                  a : element;
                  b : pileRep;
               END RECORD;

Le corps du module des paramètres définit les procédures d'interface :

1ère instanciation

2ème instanciation
PROCEDURE annuler-pointeur( p:INOUT pileRep );
BEGIN
   p.b := 0;
END;
 
PROCEDURE annuler-pointeur( p:INOUT pileRep );
BEGIN
   p := nil;
END;
PROCEDURE incrémenter-pointeur( p:INOUT pileRep );
BEGIN
   p.b := p.b + 1;
END;
 
PROCEDURE incrémenter-pointeur( p:INOUT pileRep );
VAR q:pileRep;
BEGIN
   NEW q;
   q.b := p;
   p := q;
END;
PROCEDURE décrémenter-pointeur( p:INOUT pileRep );
BEGIN
   p.b := p.b - 1;
END;
 
PROCEDURE décrémenter-pointeur( p:INOUT pileRep );
BEGIN
   p := p.b;
END;
PROCEDURE écrire-valeur( p:INOUT pileRep; e:IN element );
BEGIN
   p.a[p.b] := e;
END;
 
PROCEDURE écrire-valeur( p:INOUT pileRep; e:IN element );
BEGIN
   p.a := e;
END;
PROCEDURE lire-valeur( p:INOUT pileRep; e:OUT element );
BEGIN
   e := p.a[p.b];
END;
 
PROCEDURE lire-valeur( p:INOUT pileRep; e:OUT element );
BEGIN
   e := p.a;
END;