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

Annexe : la syntaxe initiale

phylum des environnements : meta-ENV

(def meta-ENV
   ((ref decl-env)
    (def imptt ()
       ("()"))))

opérateur d'environnement : meta-env

(def decl-env
   ((def meta-env
       ((def imptt ()
           ("(env"
            (lst-init ((LST-TRM))
               (imptt ((meta-TRM))))
            ")"))))))

phylum des termes : meta-TRM

(def meta-TRM
   ((ref decl-ENV)
    (ref decl-LSP)
    (ref meta-def)
    (ref meta-ref)
    (def imptt ()
       ((imptt ((meta-ref)))))))

opérateur de définition : meta-def

(def decl-def
   ((def meta-def
       ((def imptt ()
           ("(def" (NOM)
            (imptt
               ((ENV)
                (meta-ENV)))
            (imptt
               ((REP)
                (meta-REP)))
            ")"))))))

opérateur de référence : meta-ref

(def decl-ref
   ((def meta-ref
       ((def imptt ()
           ("(ref" (NOM)
            (imptt
               ((ENV)
                (meta-ENV)))
            ")"))))))

phylum des représentations : meta-REP

(def meta-REP
   ((ref decl-rep)
    (def imptt ()
       ("()"))))

opérateur de représentation : meta-rep

(def decl-rep
   ((def meta-rep
       ((def imptt ()
           ("(rep"
            (lst-init ((LST-ATM))
               (imptt ((meta-ATM))))
            ")"))))))

phylum des atomes : meta-ATM

(def meta-ATM
   ((ref decl-REP)
    (ref decl-LSP)
    (ref meta-stg)
    (ref meta-use)
    (ref meta-STRING)
    (def imptt ()
       ((imptt ((meta-use)))))))

opérateur de string : meta-stg

(def decl-stg
   ((def meta-stg
       ((def imptt ()
           ("(stg" (NOM)
            ")"))))))

opérateur d'utilisation : meta-use

(def decl-use
   ((def meta-use
       ((def imptt ()
           ("(use" (NOM)
            (imptt
               ((ENV)
                (meta-ENV)))
            ")"))))))

phylum des expressions Lisp : meta-LSP

(def meta-LSP
   ((ref decl-lsp)
    (def imptt ()
       ("()"))))

opérateur d'expression Lisp : meta-lsp

(def decl-lsp
   ((def meta-lsp
       ((def imptt ()
           ("(lsp"
            (lst-init ((LST-SEX))
               (imptt ((meta-SEX))))
            ")"))))))

phylum des S-expressions : meta-SEX

(def meta-SEX
   ((ref decl-TRM)
    (ref decl-ATM)
    (ref meta-ATOME)
    (ref meta-LISTE)
    (def imptt ()
       ("()"))))

phyla prédéfinis : meta-STRING meta-ATOME meta-LISTE

(def meta-STRING
   ((def imptt ()
       ("""" (STRING) """"))))

(def meta-ATOME
   ((def imptt ()
       ((ATOME)))))

(def meta-LISTE
   ((def imptt ()
       ((LISTE)))))

Exemple de texte

On définit le texte :

(def txt
   ((def a () ("A")))
   ("X:=" (use a) ";"))

On le représente par :

(def meta-txt
   ((ref meta-def)
    (def NOM () ("txt"))
    (def ENV
       ((ref meta-env)
        (def LST-TRM
           (lst-env
              ((ref meta-def)
               (def NOM () ("a"))
               (def ENV
                  ((ref meta-env)
                   (def LST-TRM
                      (lst-env))))
               (def REP
                  ((ref meta-rep)
                   (def LST-ATM
                      (lst-env
                         ((ref meta-stg)
                          (def NOM () ("A")))))))))))
    (def REP
       ((ref meta-rep)
        (def LST-ATM
           (lst-env
              ((ref meta-stg)
               (def NOM () ("X:=")))
              ((ref meta-use)
               (def NOM () ("a"))
               (def ENV
                  ((ref meta-env)
                   (def LST-TRM
                      (lst-env)))))
              ((ref meta-stg)
               (def NOM () (";")))))))))

On utilise la propriété imptt en se plaçant dans le phylum meta-TRM :

(imptt
   ((meta-txt)
    (meta-TRM)))

qui fournit :

("(def" "txt"
   "(env"
      "(def" "a"  "(env" ")"  "(rep" """A""" ")" ")"
   ")"
   "(rep"
      """X:="""  "(use" "a" "(env" ")" ")"  """;"""
   ")"
")")

qui s'affiche sous la forme simplifiée :

(def txt
   (env
      (def a  (env)  (rep "A") )
   )
   (rep
      "X:="  (use a (env) )  ";"
   )
)