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.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

Manipulation symbolique

La première étape consiste à faire de la manipulation symbolique de textes. Au lieu d'utiliser des chaînes de caractères, on définit des textes, qu'on utilise ensuite symboliquement en les nommant au lieu de leur représentation.

Tout de suite on introduit la notion de module : on ne peut guère considérer toutes les définitions de textes placées au même niveau, où tout le monde verrait tout le monde ; on comprend qu'on se heurterait alors rapidement à de franches difficultés pour retrouver une définition de texte, pour inventer un nouveau nom de texte, ...

La deuxième étape consiste à faire de la manipulation symbolique de symboles. Ceci tient à diverses raisons :

Un symbole a alors deux valeurs :

La manipulation symbolique des textes s'intéresse à la valeur de représentation.
La manipulation symbolique des symboles s'intéresse à la valeur d'environnement.

Note :
On peut rapprocher du propos précédent le type d'interprétation qu'on donne aux environnements locaux d'utilisation :
(use a
   (def x ...)
   (def y ...))
on définit un nouveau symbole de manipulation des symboles : $, qui est tel que :
- l'environnement de $ est composé des textes x et y,
- la représentation de $ est, par défaut : (use a).
La représentation est alors évaluée dans le contexte de définition du symbole $, ce qui correspond bien à ce qu'on souhaite.

Exemple 1

définition des variables

def var
   def decla = "VAR " (use nom) ":" (use type) ";"
   def util  = (use nom)

définition d'une variable

def varA
   def nom = "A"
   def type = "integer"
   (ref var)

varA admet les propriétés :
nom, type, decla, util

La déclaration textuelle de "A" est :
(use decla (ref varA))

L'utilisation textuelle de "A" est :
(use util (ref varA))

Mais aussi, par exemple : le type de "A" – qui est un contrôle non textuel – est :
(use type (ref varA))

Exemple 2

définition des tableaux

def tab
   def utiltab = (use nom) "[" (use index) "]"
   def type  = "ARRAY[1.." (use taille) "] OF " (use typeelt) ";"
   (ref var)

définition d'une variable tableau

def tabB
   def nom = "B"
   def taille = "100"
   def typeelt = "real"
   (ref tab)

Dans tab :
- on ajoute la propriété : utiltab,
- on masque le paramètre type en l'instanciant.
Les paramètres sont alors : nom, taille et typeelt.

L'utilisation textuelle de "B" peut s'intéresser au tableau global ou au tableau indicé :

le tableau global :
(use util (ref tabB))

le tableau indicé :
(use utiltab
   (def index = "I")
   (ref tabB))

tabB concentre ces deux sortes d'utilisation du même objet "B" dans deux perspectives différentes – deux types différents.