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
5.5.1. La syntaxe de la syntaxe abstraite
5.5.2. Le graphe des phyla
5.5.3. Construction du graphe
5.5.33.1. Présentation
5.5.33.2. Matrice des phyla
5.5.33.3. Matrice des opérateurs
5.5.33.4. Implantation des algorithme
5.5.33.5. Analyse des attributs
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

Construction du graphe

1. Présentation

2. Matrice des phyla

3. Matrice des opérateurs

4. Implantation des algorithme

5. Analyse des attributs

5. Analyse des attributs

L'information construite à l'aide des matrices de phyla et d'opérateurs est suffisante pour décider si un opérateur donné appartient en propre, appartient indirectement ou n'appartient pas à un phylum donné. Cependant toute évaluation d'attribut nécessitant une recherche dans les matrices, il serait très coûteux, à l'exécution, de ne conserver que cette information.

Aussi, après construction des matrices réalise-t-on une analyse des attributs, qui construit pour chaque attribut et chaque phylum la fermeture transitive de la relation « l'opérateur appartient au phylum ». Ce calcul est conservé dans la P-list de variables auxiliaires.

Par exemple, pour le phylum TRM, on construit la P-list des symboles :

- evalt-TRM : évaluation
- recht-TRM : recherche
- cpltt-TRM : complétion
- imptt-TRM : impression
- entre-TRM : entrée
- sorte-TRM : sortie
- evale-TRM : impression évaluée

La P-list de imptt-TRM est, dans la syntaxe initiale :

( nulle  imptt-err   atome  imptt-atome   liste  imptt-liste
  env    imptt-env   rep    imptt-err     lsp    imptt-lsp
  def    imptc-def   ref    imptc-ref
  stg    imptt-err   use    imptt-err )

- nulle : c'est l'attribut des opérateurs qui n'appartiennent pas au phylum TRM – ici rep, stg et use
- atome, liste : c'est l'attribut des objets Lisp qui ne représentent aucun opérateur.
- env, lsp : l'attribut est imptt-, soit l'impression complète, puisque ces opérateurs n'appartiennent pas directement au phylum TRM.
- def, ref : l'attribut est imptc-, soit l'impression concise, puisque ces opérateurs appartiennent en propre au phylum TRM.

La fonction Lisp get permet alors d'accéder immédiatement au traitement à effectuer, à l'occurrence d'un opérateur dans un phylum donné.

(get 'imptt-TRM 'env)
traitement = fonction imptt-env

(get 'imptt-TRM 'rep)
traitement = fonction imptt-err

(get 'imptt-TRM 'def)
traitement = fonction imptc-def

Remarques

Les attributs de phyla permettent de construire les trois premières « propriétés » des P-liste : nulle, atome, liste.

Les attributs d'opérateurs permettent de construire, dans chaque phylum, l'attribut attaché à chaque opérateur défini. L'analyse étant réalisée après la modification des matrices de phyla et d'opérateurs, l'information : « l'opérateur appartient nouvellement au phylum » ou « l'opérateur appartenait anciennement au phylum » est perdue. Or c'est cette information qui détermine s'il faut ou non modifier la P-list. Aussi la conserve-t-on dans un "champ auxiliaire" de la matrice des opérateurs.

Les attributs d'opérateurs étant de deux sortes, on a deux traitements :

  • ou bien il s'agit d'un atome Lisp, et l'attribut est cet atome,
  • ou bien il s'agit d'une liste, qui doit être une paire : si l'opérateur appartient en propre au phylum, on prend pour attribut le second élément de la liste, et sinon le premier.