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.77.1. Exemples d'évaluation
9.1.77.2. Solution retenue
9.1.77.3. Liens avec l'environnement local
9.1.77.4. Polymorphisme
9.1.77.5. Bouclage de l'évaluation
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

Polymorphisme

Un sujet qui n'a pas encore été abordé concerne le contexte dans lequel on évalue une référence à un texte. La réponse n'est pas forcément simple. En effet, une référence évaluée enrichit le contexte d'évaluation : faut-il alors évaluer cette référence dans le contexte enrichi, ou faut-il évaluer la référence dans le contexte dans le contexte initial puis enrichir le contexte ?

Référence à évaluer :

référence à évaluer

Référence évaluée = nouveau contexte :

référence à évaluer

1. Exemples d'évaluation

2. Solution retenue

3. Liens avec l'environnement local

4. Polymorphisme

5. Bouclage de l'évaluation

1. Exemples d'évaluation

On présente un exemple d'évaluation non simple :

def a
   ref x
   ref y

def x
   def y
      def u
      def v

On évalue l'environnement de a :

Exemple de polymorphisme

On trouve le texte a dans glo, on évalue alors son environnement :

Exemple de polymorphisme

C'est l'environnement évalué qui sera retourné :

Exemple de polymorphisme

(ref x) : on a trouvé le texte x dans glo, la référence a donc été remplacée par son environnement.
(ref y) : on ne trouve pas y, et la référence reste indéfinie.

Or l'exemple pourrait laisser entendre que la référence à y est celle qui est importée par la référence évaluée de x. On évalue alors l'environnement de a en considérant qu'on remplace les références trouvées par leurs valeurs :

On évalue : (ref x) dans le contexte local – dont l'environnement à évaluer a :

Exemple de polymorphisme

donne :

Exemple de polymorphisme

On évalue : (ref y) dans le contexte total partiellement modifié par l'évaluation précédente :

Exemple de polymorphisme

donne :

Exemple de polymorphisme

C'est le nouvel environnement évalué de a :

Exemple de polymorphisme

On peut évidemment avoir des situations beaucoup plus complexes.

Par exemple :

def a            def x            def y
   ref x            ref t            def t
   ref y            def u               def z
   ref z                             def v

L'évaluateur doit donc subtilement interrompre une partie de l'évaluation d'un environnement pour la reprendre ultérieurement.

Divers problèmes sont sous-jacents à cette remarque :