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.1.1. Comportement dynamique des textes
3.1.2. La syntaxe complétée
3.1.22.1. Opérateur de S-expression simple
3.1.22.2. Opérateurs de liste
3.1.22.3. Opérateurs de listes doubles
3.1.22.4. Opérateurs de typage des textes
3.1.22.5. Résumé : 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.2. La Syntaxe Abstraite : Manuel du concepteur
9.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

La syntaxe complétée

On présente plusieurs opérateurs qu'on ajoute à la syntaxe concrète : on construit alors la syntaxe complétée, qui à son tour pourra être complétée par de nouvelles définitions :

1. Opérateur de S-expression simple

2. Opérateurs de liste

3. Opérateurs de listes doubles

4. Opérateurs de typage des textes

5. Résumé : la syntaxe complétée

4. Opérateurs de typage des textes

syntaxe

trm ::= trm | deft | reft
    deft ::= <nom> <nom> env rep
    reft ::= <nom> <nom> env

atm ::= atm | uset
    uset ::= <nom> <nom> env

sémantique

Les textes sont typés. A la définition, ou à l'emploi d'un texte, on fournit deux identificateur :
- le premier est le nom du type,
- le deuxième est le nom de l'objet.

Une utilisation ou une référence typée à un texte typé nécessite que les deux noms de type soient égaux. Pour les autres cas :

On notera donc que c'est à l'emploi, et non à la définition, qu'on décide si l'on souhaite réaliser un emploi typé ou non du texte.

exemple

deft typeX init
   = "X:=0"
deft typeX incr
   = "X:=X+1"
def z
   def init
      = "Y:=0"
   deft typeY incr
      = "Y:=Y+1"               donne
   def a = (use init)        :  "Y:=0"
   def a = (use incr)        :  "Y:=Y+1"
   def a = (uset typeX init) :  "X:=0"
   def a = (uset typeX incr) :  "X:=X+1"

utilisation de a : l'utilisation non typée de init fournit la première définition visible de init – celle de "Y".

utilisation de b : de la même façon, et bien que le texte incr défini pour "Y" soit typé, on prend cette définition de incr.

utilisation de c : le texte init défini pour "Y" n'étant pas typé, il ne peut être pris en compte : on prend alors la définition relative à "X" – parce qu'aussi elle est du type attendu typeX.

utilisation de d : le texte incr défini pour "Y" n'est pas du type attendu typeX, et c'est encore celui défini pour "X" qui est pris.