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.11.1. La syntaxe concrète
5.2.11.2. La syntaxe abstraite
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

Représentation de la syntaxe abstraite par les objets

1. La syntaxe concrète

2. La syntaxe abstraite

2. La syntaxe abstraite

Parce qu'elle s'introduit assez naturellement, on reprend la première syntaxe dans les termes d'une syntaxe abstraite :

[2] (1)ENV ::= env
(2)    env -> TRM*...
(3)TRM ::= ENV LSP def ref
(4)    def -> NOM ENV REP
(5)    ref -> NOM ENV
(6)REP ::= rep
(7)    rep -> ATM*...
(8)ATM ::= REP LSP stg use STRING
(9)    stg -> NOM
(10)    use -> NOM ENV
(11)LSP ::= lsp
(12)    lsp -> SEX*...
(13)SEX ::= TRM ATM ATOME LISTE
(1)le phylum des environnements ENV contient l'opérateur d'environnement env
(2)l'opérateur d'environnement env est une liste d'opérateurs du phylum des termes TRM
(3)le phylum des termes TRM contient :
- les opérateurs des phyla des environnements ENV et des expressions Lisp LSP
- les opérateurs de définition def et de référence ref
(4)une définition est : un nom NOM, un opérateur du phylum des environnements ENV, un opérateur du phylum des représentations REP
(5)une référence est : un nom NOM, un opérateur du phylum des environnements ENV
(6)le phylum des représentations REP contient l'opérateur de représentation rep
(7)l'opérateur de représentation rep est une liste d'opérateurs du phylum des atomes ATM
(8)le phylum des atomes ATM contient :
- les opérateurs des phyla des représentations REP et des expressions Lisp LSP
- les opérateurs de string stg et d'utilisation use
- l'opérateur du phylum prédéfini des chaînes de caractères STRING
(9)une string est : un nom NOM
(10)une utilisation est : un nom NOM, un opérateurs du phylum des environnements ENV
(11)le phylum des expressions Lisp LSP contient l'opérateur d'expression Lisp lsp
(12)l'opérateur d'expression Lisp lsp est une liste d'opérateurs du phylum des S-expressions SEX
(13)le phylum des S-expressions SEX contient :
- les opérateurs des phyla des termes TRM et des atomes ATM
- les opérateurs des phyla prédéfinis des atomes Lisp ATOME et des listes Lisp LISTE

Entre cette syntaxe et la précédente, beaucoup de chemin a été parcouru :

En définitive, on est passé :

Dans une telle situation, il n'est alors raisonnablement plus possible de tester, dans chaque cas d'évaluation (plus précisément pour chaque phylum dans lequel on se place à l'évaluation) de quel opérateur il s'agit, puis de traiter cet opérateur quand celui-ci a été reconnu. On devrait en effet répéter dans chaque phylum qui a la visibilité d'un opérateur donné le traitement – ou au moins l'appel à une fonction qui effectue ce traitement. Or il y a beaucoup d'opérateurs partagés entre plusieurs phyla, il y aurait donc beaucoup de répétitions.

Qui plus est, il y a une certaine logique entre les visibilités des phyla et des opérateurs : définir un nouvel opérateur, qu'on place dans le phylum des environnements ENV, nécessite raisonnablement de reconnaître aussi cet opérateur dans les phyla des termes TRM et des expressions Lisp LSP.