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.2.1. Représentation de la syntaxe abstraite par les objets
5.2.2. L'expression par les objets
5.2.3. Méta-circularité de l'évaluateur
5.2.4. Annexe : la syntaxe initiale
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

Méta-circularité de l'évaluateur

Il ne s'agit pas ici d'écrire la totalité de l'évaluateur en ses propres termes. Ceci pour au moins trois raisons :

On ne donne donc dans ce qui suit que l'attribut qui s'adapte bien à la situation : c'est l'attribut d'impression, qui affiche normalement une suite de caractères, et qui retourne dans le cas présent une suite de chaînes de caractères.

La totalité de la syntaxe se trouve en annexe ; on ne donne ici qu'une sélection choisie.

Le langage

Les opérateurs sont définis dans des « modules » isolés, pour être éventuellement partagés entre plusieurs phyla – la situation ne se présentera pas ici. Ils sont formellement paramétrés par les noms des champs qu'ils définissent.

Un phylum est défini par des références à des déclarations d'opérateurs ou de phyla. Il définit de plus le traitement d'erreur, qui est pris « par défaut » pour un opérateur dont le phylum n'aurait pas la visibilité.

opérateur d'environnement : meta-env

  (def decl-env; définit l'opérateur meta-env
   ((def meta-env;   le paramètre formel est LST-TRM
       ((def imptt (); définit sur meta-env la propriété imptt
           ("(env";
            (lst-init ((LST-TRM)); appelle pour chaque élément de LST-TRM
               (imptt ((meta-TRM))));   sa propriété imptt dans le phylum
            ")"))))));   des termes meta-TRM

opérateur de définition : meta-def

  (def decl-def; définit l'opérateur meta-def
   ((def meta-def;   les paramètres sont NOM, ENV et REP
       ((def imptt (); définit sur meta-def la propriété imptt
           ("(def" (NOM); utilise le paramètre formel NOM
            (imptt; utilise la propriété imptt du paramètre
               ((ENV);   formel ENV dans le phylum
                (meta-ENV)));   des environnements meta-ENV
            (imptt; utilise la propriété imptt du paramètre
               ((REP);   formel REP dans le phylum
                (meta-REP)));   des représentations meta-REP
            ")"))))));

phylum des environnements : meta-ENV

  (def meta-ENV; définit le phylum meta-ENV
   ((ref decl-env); déclare que l'opérateur meta-env
 ;   appartient au phylum meta-ENV
    (def imptt (); définit la propriété imptt pour les cas
       ("()")))); d'erreur

phylum des termes : meta-TRM

  (def meta-TRM; définit le phylum meta-TRM
   ((ref decl-def); déclare les opérateurs meta-def et meta-ref
    (ref decl-ref);   appartenir au phylum meta-TRM
    (ref meta-ENV); déclare les opérateurs des phyla meta-ENV
    (ref meta-LSP);   et meta-LSP appartenir à meta-TRM
    (def imptt (); définit la propriété imptt par défaut :
       ((imptt ((meta-ref)))))));   ici on prend la propriété de l'opérateur
 ;   meta-ref