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

1. Position du problème

Bien que dans tout ce qui précède on ait insisté que le fait qu'il fallait rester simple, il ne faut pas non plus être trop simple à un tel point qu'on ne pourrait plus rien utiliser. L'idée est d'offrir un « noyau dur » intouchable, mais de permettre aussi de compléter ce noyau par des concepts plus riches.

Dans la partie précédente, on a présenté la Syntaxe Complétée, parce qu'elle introduit de nouvelles fonctionnalités – et en particulier la gestion des listes ; on n'a cependant pas abordé la question de savoir comment introduire ces nouveaux opérateurs du langage. Du Langage Primitif, qui compose la Syntaxe Concrète, et qui par essence est très simple, on est passé à un langage beaucoup plus riche, et donc peut-être aussi plus difficile à représenter.

La question est : faut-il compléter le noyau dur en y introduisant le concept de liste, par exemple, ou peut-on, en l'état, exprimer ce concept ? La réponse n'est ni oui ni non : on ne touchera pas au noyau dur, mais on ne peut pas non plus tout exprimer à partir de ce qu'il contient.

La solution est de profiter de la possibilité qui est offerte d'insérer du code Lisp pour dérouter l'évaluation d'un texte vers une évaluation spécifique de ce texte qu'on aura soi-même définie. C'est ce que j'appelle une macro-définition de texte, qui ne définit pas un nouveau texte mais un mécanisme d'évaluation des textes.

Remarque :
Comme il est dit parfois, Lisp est un langage qui par certains aspects possède toute la puissance d'un langage machine. La démarche s'apparente ici assez bien à l'appel de routines écrites en langage machine – Lisp – et donc n'est pas déconcertante sur le principe. Mais bien sûr l'utilisation du langage machine dans un langage "évolué" est toujours source des pires tracas, aussi, si la démarche n'est pas déconcertante sur le principe, elle peut l'être dans les faits.