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
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.2.1. Attributs de la syntaxe abstraite
9.2.2. La Syntaxe Initiale
9.2.22.1. Schémas
9.2.22.2. Syntaxe abstraite
9.2.22.3. Résumé
9.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

La Syntaxe Initiale

1. Schémas

2. Syntaxe abstraite

3. Résumé

2. Syntaxe abstraite

L'"expérience" montre qu'on peut dégager deux sortes d'attributs :

On trouve généralement pour le premier cas :

On trouve généralement pour le deuxième cas :

Note : on présente ici les vrais attributs de phyla et d'opérateurs (et non les schémas d'attributs) : l'argument des fonctions sera donc toujours la liste préfixée par l'opérateur, privée de ce préfixe.

2.1. phylum des environnements : ENV

attributs de phylum

cpltt-ENV-nil ‹arg› ...

cas d'erreur : on retourne un environnement vide : (env) – schéma cpltt-phylLST-nil.

imptt-ENV-nil ‹arg› ...

cas d'erreur : on imprime l'environnement vide – schéma imptt-phylLST-nil.

evale-ENV ‹arg› ...

impression évaluée – schéma evale-phylLST.

opérateur : env

evalt-env ‹arg› ...

évaluation progressive d'un environnement.

recht-env ‹arg› ...

recherche d'un nom de texte dans un environnement.

cpltt-env ‹arg› ...

complétion d'un environnement – schéma cpltt-operLST.

imptt-env ‹arg› ...

impression complète d'un environnement – schéma imptt-operLST.

imptc-env ‹arg› ...

impression concise d'un environnement – schéma imptc-operLST.

entre-env ‹arg› ...

entrée – schéma entre-operLST.

sorte-env ‹arg› ...

sortie – schéma sorte-operLST.

2.2. phylum des représentations : REP

attributs de phylum

cpltt-REP-nil ‹arg› ...

cas d'erreur : on retourne une représentation vide : (rep) – schéma cpltt-phylLST-nil.

imptt-REP-nil ‹arg› ...

cas d'erreur : on imprime la représentation vide – schéma imptt-phylLST-nil.

evale-REP ‹arg› ...

impression évaluée – schéma evale-phylLST.

opérateur : rep

evalt-rep ‹arg› ...

évaluation d'une représentation.

cpltt-rep ‹arg› ...

complétion d'une représentation – schéma cpltt-operLST.

imptt-rep ‹arg› ...

impression complète d'une représentation – schéma imptt-operLST.

imptc-rep ‹arg› ...

impression concise d'une représentation – schéma imptc-operLST.

entre-rep ‹arg› ...

entrée – schéma entre-operLST.

sorte-rep ‹arg› ...

sortie – schéma sorte-operLST.

Remarques :

2.3. phylum des expressions Lisp :LSP

attributs de phylum

cpltt-LSP-nil ‹arg› ...

cas d'erreur : on retourne un texte Lisp vide : (lsp) – schéma cpltt-phylLST-nil.

imptt-LSP-nil ‹arg› ...

cas d'erreur : on imprime le texte Lisp vide – schéma imptt-phylLST-nil.

evale-LSP ‹arg› ...

impression évaluée – schéma evale-phylLST.

opérateur : lsp

evalt-lsp ‹arg› ...

évaluation d'un texte Lisp.

cpltt-lsp ‹arg› ...

complétion d'un texte Lisp – schéma cpltt-operLST.

imptt-lsp ‹arg› ...

impression complète d'un texte Lisp – schéma imptt-operLST.

imptc-lsp ‹arg› ...

impression concise d'un texte Lisp – schéma imptc-operLST.

entre-lsp ‹arg› ...

entrée – schéma entre-operLST.

sorte-rep ‹arg› ...

sortie – schéma sorte-operLST.

Remarques :
Ici encore on ne définit pas de fonction recht-lsp de recherche dans un texte Lisp.

2.4. phylum des termes : TRM

attributs de phylum

Complétion et impression dans les cas exceptionnels (nul, atome, liste) seront des cas d'erreur.

evale-TRM ‹arg› ...

impression évaluée : on imprime l'environnement en son entier.

opérateur : def

evalt-def ‹nom› ‹env› ‹rep›

évaluation d'une définition : la définition est retournée identiquement à elle-même.

recht-def ‹nom› ‹env› ‹rep›

recherche d'un nom de texte : on teste ici si le nom de la définition est égal au nom recherché, qui est contenu dans la variable ctx.

cpltt-def ‹arg› ...

complétion d'une définition.

imptt-def ‹nom› ‹env› ‹rep›

impression complète d'une définition.

imptc-def ‹nom› ‹env› ‹rep›

impression concise d'une définition : elle est dans ce cas identique à l'impression complète de la définition.

entre-def ‹arg› ...

entrée : e1 = nom, e2 = environnement, e3 = représentation.

sorte-def ‹arg› ...

sortie.

opérateur : ref

evalt-ref ‹nom› ‹env›

évaluation d'une référence.

recht-ref ‹nom› ‹env›

recherche d'un nom de texte : la fonction retourne toujours 'faux' – on ne réévalue pas une référence indéfinie.

cpltt-ref ‹arg› ...

complétion d'une référence : la fonction est appelée :
- quand on a rencontré un opérateur de référence ref,
- quand on a rencontré une liste qui n'était aucun opérateur connu – traitement par défaut.
– schéma cpltt-operUTI.

imptt-ref ‹nom› ‹env›

impression complète d'une référence – schéma imptt-operUTI.

imptc-ref ‹nom› ‹env›

impression concise d'une référence – schéma imptc-operUTI.

entre-ref ‹arg› ...

entrée : e1 = nom, e2 = environnement – schéma entre-operUTI.

sorte-ref ‹arg› ...

sortie – schéma sorte-operUTI.

2.5. phylum des atomes : ATM

attributs de phylum

cpltt-ATM-atome ‹arg›

complétion d'un atome Lisp : on retourne l'atome ‹arg› s'il s'agit d'une chaîne de caractères (string), et la valeur nil sinon – cas d'erreur.

imptt-ATM-atome ‹arg›

imprime l'atome ‹arg› : s'il s'agit d'une chaîne de caractères, on l'encadre par des guillemets et on tient compte du cas où cette chaîne spécifie un retour à la ligne "^M".

evale-ATM ‹arg› ...

impression évaluée.

opérateur : stg

evalt-stg ‹nom›

évaluation de stg : on retourne la conversion en chaîne de caractères du nom (fonction Lisp string).

cpltt-stg ‹arg› ...

complétion de stg.

imptt-stg ‹nom›

impression complète de stg.

imptc-stg ‹nom›

impression concise de stg : on n'imprime que le nom.

entre-stg ‹arg› ...

entrée – schéma entre-nom.
Comme il a été dit, on n'a pas d'attribut de sortie : sorte-stg.

opérateur : use

evalt-use ‹nom› ‹env›

évaluation d'une utilisation.
On peut noter que la fonction est presque identique à celle de l'évaluation d'une référence : la différence réside uniquement dans la valeur retournée par l'évaluation – qui une représentation ou une chaîne de caractères, qui un environnement évalué ou une référence indéfinie.

cpltt-use ‹arg› ...

complétion d'une utilisation – schéma cpltt-operUTI.

imptt-use ‹nom› ‹env›

impression complète d'une utilisation – schéma imptt-operUTI.

imptc-use ‹nom› ‹env›

impression concise d'une utilisation – schéma imptc-operUTI.

entre-use ‹arg› ...

entrée : e1 = nom, e2 = environnement – schéma entre-operUTI.

sorte-use ‹arg› ...

sortie – schéma sorte-operUTI.

Remarques :
On n'a encore aucune fonction de recherche, ni pour stg ni pour use.

2.6. phylum des S-expressions : SEX

On regroupe ici les attributs attachés aux phyla "prédéfinis" ATOME et LISTE.

On ne définit pas de fonction de recherche pour les cas exceptionnels (nul, atome, liste) : ce seront toujours des cas d'erreur.

cpltt-atome ‹arg›

complétion d'un atome : l'atome est retourné identiquement à lui-même.

cpltt-liste ‹arg› ...

complétion d'une liste : on retourne la liste dans laquelle on a récursivement appelé l'attribut de complétion sur chaque élément de la liste.

imptt-atome ‹arg›

impression d'un atome : pour une meilleure lecture, les chaînes de caractères Lisp (string) sont encadrées par des guillemets.

imptt-liste ‹arg› ...

impression d'une liste.

entre-atome ‹arg›

entrée dans un atome : l'entrée est refusée.

entre-liste ‹arg›

entrée dans une liste : on définit une liste auxiliaire préfixée par lsp, qui construit un objet sur le modèle de l'opérateur lsp. On en déduit qu'on n'a pas d'attribut de sortie, ni sur les atomes, ni sur les listes.

Ces deux fonctions sont toujours les attributs attachés aux cas exceptionnels des autres phyla, respectivement pour le cas atome et le cas liste. On obtient donc éventuellement des impressions "surchargées", où apparaissent des termes où on n'en attend pas, mais aussi on a une impression plus conforme à l'état courant de la représentation interne des objets qu'on manipule.