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.44.1. Exemples
9.1.44.2. Contre-exemple
9.1.44.3. Contre-contre-exemple
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

Emploi par référence

1. Exemples

2. Contre-exemple

3. Contre-contre-exemple

1. Exemples

Premier exemple

On définit deux textes a et b :

def a
   def x = "XA"
   def m = "M:" (use x)

def b
   def x = "XB"
= "1:" (use x)
  "2:" (use m (ref a))

évaluation de b

Texte évalué qu'on souhaite obtenir :

"1:" "XB"
"2:" "M:" "XA"

On évalue l'utilisation de b dans le contexte global d'évaluation glo :

Premier exemple d'emploi par référence

On trouve b dans l'environnement glo ; on évalue alors sa représentation, en plaçant en priorité l'environnement de définition de b :

Premier exemple d'emploi par référence

"1:" s'évalue en "1:"
(use x) s'évalue en "XB" (qui correspond à la définition de x dans l'environnement b)
"2:" s'évalue en "2:"

Il reste à évaluer (use m (ref a)).

On évalue l'environnement local de l'utilisation : (ref a)

Premier exemple d'emploi par référence

Il reste à évaluer l'utilisation du texte m, l'environnement local évalué étant placé en priorité :

Premier exemple d'emploi par référence

On évalue enfin la représentation de m dans le contexte où l'environnement de m a été ajouté :

Premier exemple d'emploi par référence

"M:" s'évalue en "M:"
(use x) s'évalue en "XA" (qui est la définition la plus proche de x, à savoir celle de l'environnement a)

Deuxième exemple

On définit à nouveau deux textes a et b :

def a
   def x = "XA"
   def m = "M:" (use x) ":" (use y)

def b
   def x = "XB"
= "1:" (use x)
  "2:" (use m
          (ref a)
          (def y = "YB"))

évaluation de b

Texte évalué qu'on souhaite obtenir :

"1:" "XB"
"2:" "M:" "XA" ":" "YB"

On évalue b dans l'environnement global glo :

Deuxième exemple d'emploi par référence

Le début étant similaire au cas précédent, on s'intéresse tout de suite à l'utilisation du texte m :

Deuxième exemple d'emploi par référence

On évalue l'environnement local de l'utilisation :

Deuxième exemple d'emploi par référence

(ref a) : fournit l'environnement de a ;
(def y = "YB") : s'évalue tel quel.
On obtient ainsi l'environnement local évalué de l'utilisation.

On évalue ensuite la représentation de m :

Deuxième exemple d'emploi par référence

(use x) s'évalue en : "XA"
(use y) s'évalue en : "YB"

Troisième exemple

On définit encore deux textes a et b :

def a
   def x = "XA"
   def c = "XA"
      def z = "ZC"
      def m = "M:" (use x) ":" (use y) ":" (use z)

def b
   def x = "XB"
   def z = "ZB"
= "1:" (use x)
  "2:" (use m
          (ref c (ref a))
          (def y = "YB"))

Le cas est cependant plus complexe que précédemment. Ici, on introduit en effet deux niveaux d'emboîtement des environnements. Si on conserve, comme on a fait jusqu'à présent, uniquement le dernier environnement qui a permis de trouver le texte, alors on risque de perdre certaines informations qu'on croyait en principe attachées au texte utilisé.

évaluation de b

Texte évalué qu'on souhaite obtenir :

"1:" "XB"
"2:" "M:" "XA" ":" "YB" ":" "ZC"

On évalue b dans l'environnement global glo :

Troisième exemple d'emploi par référence

On en arrive tout de suite à l'évaluation de l'utilisation :

Troisième exemple d'emploi par référence

On évalue l'environnement local : (ref c (ref a)).

On évalue d'abord l'environnement local de celui-ci : (ref a) qui fournit l'environnement de a :

Troisième exemple d'emploi par référence

On évalue ensuite la référence au texte c, quand on a placé l'environnement local évalué :

Troisième exemple d'emploi par référence

On retourne le contexte qui est attaché à la référence : (ref c (ref a)) :

Troisième exemple d'emploi par référence

Et finalement l'environnement évalué :

Troisième exemple d'emploi par référence

On évalue enfin la représentation de m :

Troisième exemple d'emploi par référence

(use x) s'évalue : "XA" puisque ;
- on recherche x dans <env m> : il n'y est pas ;
- on le recherche alors dans <env use> :
- on le recherche dans <env c> : il n'y est pas ;
- on le recherche dans <env a> : on l'y trouve.

Remarque :

Ce mécanisme garantit qu'on ne perdra pas des informations qui seraient liées au contexte de définition du texte qu'on utilise.

En effet, dans l'exemple :

Par là même on garantit de conserver, dans l'utilisation de m, les définitions de a et c.

Quant à l'environnement propre à chaque texte, il est toujours le plus prioritaire puisqu'il est placé en premier à l'évaluation du texte : les définitions propres au texte seront toujours celles prises en priorité à l'évaluation de ce texte.