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.1.1. L'évaluation symbolique
5.1.2. Le calcul symbolique
5.1.22.1. Les liens statiques
5.1.22.2. Vue ascendante : la fermeture lexicale
5.1.22.3. Vue descendante : la fermeture contextuelle
5.1.22.4. Vue mixte
5.1.22.5. Les difficultés
5.1.3. Résumé
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.2. La Syntaxe Abstraite : Manuel du concepteur
9.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

Le calcul symbolique

1. Les liens statiques

2. Vue ascendante : la fermeture lexicale

3. Vue descendante : la fermeture contextuelle

4. Vue mixte

5. Les difficultés

5. Les difficultés

On a vu précédemment :
- le cas du contexte englobant,
- le cas du contexte voisin.
Il reste le cas du contexte englobé.

Le principe de remplacement des environnements, « à la manière des langages à structure de blocs »; conduit à des comportements un peu imprévus.

Par exemple :

Exemple d'évaluation

founit intuitivement la valeur 2. Elle fournira ici la valeur 3.

En effet, une vue classique d'un tel programme est une vue descendante :
on voit :

Exemple d'évaluation - vue descendante

qui fait dire : « x vaut 2, y vaut x : donc y vaut 2 », et puis on a un traitement spécifique, où x vaut maintenant 3 mais y vaut 2.

On adopte ici une vue ascendante du programme :
on voit :

Exemple d'évaluation - vue ascendante

et on dit : « on utilise un traitement où y vaut x et x vaut 3, donc y vaut 3 », et puis on s'intéresse au contexte d'utilisation, où x vaut 2.

Ce résultat est un peu déconcertant, mais, ce qui est plus grave, il signifie qu'on peut introduire, à l'utilisation de traitements « de bas niveau », des modifications importantes sur les concepts « de haut niveau » qu'on avait préalablement dégagés. Pour se prémunir contre ce phénomène de capture, je vois deux possibilités :

Dans l'un ou l'autre de ces cas, il reste que le problème n'est que partiellement résolu, puisqu'il faut malgré tout reconnaître qu'un symbole est "à risque" et le définir d'une façon un peu particulière – soit en le typant, soit en forçant son évaluation.