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

4. Polymorphisme

Le fait que l'environnement s'évalue en partie sur lui-même permet d'observer un comportement qui s'apparente assez bien au polymorphisme – l'usage d'un traitement sur des objets différents conduit à utiliser des définitions de ce traitement différentes.

En effet on pourra dans un environnement utiliser une première référence pour caractériser l'objet, et une deuxième pour se référer au traitement, traitement qui sera alors celui défini pour l'objet référencé.

Par exemple :

def declVARentiere
   def decla = "VAR" (nom) ":integer;"
   def incr  = (nom) ":=" (nom) "+1;"

def declVARarbre
   def decla = "VAR" (nom) ":arbre;"
   def incr  = (nom) ":=" (nom) "@." (chppteur) ";"

declVARentiere : sert à déclarer une variable entière, et la propriété incr.
declVARarbre : sert à déclarer une variable arbre (liste chaînée), et la propriété incr.

def varE
   def nom = "E"
   (ref declVARentiere)

def varA
   def nom = "A"
   def chppteur = "suiv"
   (ref declVARarbre)

varE : déclare une variable entière de nom "E", de type "integer".
varA : déclare une variable arbre de nom "A", de type "arbre", dont le champ pointeur s'appelle "suiv".

def txt
= (use incr (ref var))

txt : utilise la propriété incr de l'objet var qui joue ici le rôle d'un paramètre. C'est à ce niveau-ci qu'on observe un comportement polymorphe de l'utilisation du texte incr :

def txtE
= (use txt
     (def var
        (ref varE)))

 donne 

E:=E+1;
def txtA
= (use txt
     (def var
        (ref varA)))

 donne 

A:=A@.suiv;

txtE : utilise txt en définissant var comme étant varE.
txtA : utilise txt en définissant var comme étant varA.