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.4.1. Qualités d'un langage
5.4.2. La traduction pour « Moi aussi »
5.4.22.1. La fermeture lexicale
5.4.22.2. La liaison dynamique
5.4.22.3. Les environnements comme objets de première classe
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 traduction pour « Moi aussi »

On montre ici comment se traduiraient les particularités des évaluateurs Lisp présentés dans l'évaluateur qu'on a défini.

1. La fermeture lexicale

2. La liaison dynamique

3. Les environnements comme objets de première classe

1. La fermeture lexicale

Pour réaliser la fermeture lexicale, il faut modifier la recherche d'une définition. Telle qu'elle est définie, la recherche retourne la définition isolée. On réalise alors une "sorte" de fermeture lexicale en plaçant dans le contexte d'évaluation l'environnement local qui a permis de trouver cette définition. Pour la vraie fermeture lexicale, on a besoin de connaître le contexte de définition du texte trouvé : la recherche retourne donc ce contexte, et on value ensuite dans le contexte construit en plaçant en priorité le contexte de définition.

On a alors l'alternative suivante :

La première solution fait perdre la notion de variable libre, ce qui me paraît regrettable. La deuxième gène une vue locale des définitions de texte. Par exemple, le texte :
def txt
   = (use a) "," (use b)
semble être défini avec les variables libres a et b. Mais, si l'on regarde « plus haut », on peut découvrir :
def X
   def a = "A"
   def txt = ...
qui fait apparaître que a est en fait liée à la valeur "A", et que b semble toujours libre.

On privilégie donc l'environnement global dans lequel on évalue, qui est le « dernier environnement » où l'on puisse « remonter », quand on regarde les définitions de textes : c'est le seul environnement où l'on a l'assurance qu'une variable est bien libre. Cette approche se traduit en Scheme par la nécessité, à l'appel de la fonction eval, de fournir un environnement d'évaluation, qui tient lieu d'environnement global. Elle nuit à l'homogénéité des concepts, et n'a pas été retenue pour cela.