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.1.0. Introduction
9.1.1. Modularité
9.1.2. Encapsulation
9.1.3. Paramètre
9.1.4. Emploi par référence
9.1.5. Exemples d'application
9.1.6. Héritage de propriétés
9.1.7. Polymorphisme
9.1.8. Manipulation symbolique
9.1.9. Le 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

Encapsulation

Nommer les textes à leur définition autorise de s'y référer – plus justement à les employer – uniquement en les nommant, ce qui est donc simple. Le revers de la médaille est la gestion de ces noms : il faut en effet éviter, autant que possible, les problèmes de collision d'identificateurs ou de masquage impromptu de déclaration. La notion de contexte permet, dans une bonne mesure, d'éviter ces inconvénients.

Par exemple :

def a
= ...
def b
   def a = ...
= ...

A l'évaluation de a, on ignore ce qui est défini dans l'environnement de b, il n'y a donc aucun problème de conflit de noms.

A l'évaluation de b, on aura, nécessairement, deux fois la visibilité d'un texte nommé a : on garantit alors que l'environnement propre de b sera placé prioritairement dans le contexte d'évaluation.

Ceci signifie qu'en cas de double définition, on prend la définition qui est "la plus proche" du texte qu'on évalue. Le choix est a priori arbitraire, mais reflétera sans doute assez clairement les intentions du programmeur.

Par exemple :

def x1
   def u = "U1"
   def x2
      def u = "U2"
      def v = "V2"
      def x3
         def v = "V3"
      = (use u) (use v)

On peut légitimement penser qu'à l'évaluation de x3 on attend le résultat :
"U2" "V3"

Le contexte d'évaluation de x3 est :

contexte d'évaluation

la recherche s'effectuera alors "de gauche à droite" :
- la déclaration de v dans x3 masque celle qui est présente dans x2,
- la déclaration de u dans x2 celle de x1.