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.1.1. Solution Lisp
4.1.11.1. Position du problème
4.1.11.2. Solution Lisp
4.1.11.3. Exemples d'emploi
4.1.2. Simplification de la syntaxe : la syntaxe abstraite
4.1.3. Evolution de la syntaxe : la syntaxe initiale
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.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

Solution Lisp

1. Position du problème

2. Solution Lisp

3. Exemples d'emploi

2. Solution Lisp

La solution tient en deux points :

Note : évaluation des fonctions Lisp

L'appel d'une fonction : (f x1 x2 x3) s'évalue comme suit :

1- on évalue, en parallèle, les arguments de la fonction f : x1, x2, x3, qui fournit les valeurs respectives : v1, v2, v3 ;
2- on applique la fonction f sur les arguments évalués : v1, v2, v3.

Pour une F-expr, on n'évalue pas les arguments : f est alors appliquée sur les arguments non évalués : x1, x2, x3.

Une macro-définition est alors :
- placée à l'intérieur d'un texte Lisp lsp,
- préfixée par le nom d'une F-expr.
L'évaluation du texte Lisp lsp provoque l'évaluation, par l'évaluateur Lisp, de l'expression préfixée, laquelle permet le déroutement de l'évaluation vers le texte de définition de la F-expr nommée.

On n'a donc qu'une seule chose à faire pour la définition d'une macro-définition : écrire le texte de la F-expr associée – problème non simple mais clairement identifié. Pour ce faire, on garantit, à l'évaluation de la macro-définition – à l'appel de la F-expr – une unique information de contexte :

on a une variable Lisp ctx dont la valeur est précisément le « contexte d'évaluation » tel qu'il est défini précédemment.

Ceci signifie que dans le texte de la F-expr on pourra invoquer l'évaluation des textes, puisqu'on a la connaissance, "lispienne", du contexte d'évaluation des textes.

Par exemple (ce sont les opérateurs de la Syntaxe Complétée) :

macro-def : lst-init

syntaxe: (lst-init env rep)
sémantique : env est un environnement composé d'environnements : pour chaque environnement, on évalue la représentation rep dans le contexte formé par cet environnement et le contexte reçu (variable : ctx).

macro-def : lst

syntaxe: (lst rep)
sémantique : lst doit s'évaluer "à l'intérieur" d'une évaluation de lst-init : pour chaque environnement restant, on évalue la représentation rep dans le contexte construit comme il l'est avec lst-init.

macro-def : tst

syntaxe: (tst (cond1 rep) ... (condN rep))
sémantique : cond1 ... condN sont des nombres.
tst évalue la représentation rep associée à condK s'il reste exactement condK environnements dans la liste des environnements.