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.3. L'éditeur page : Guide de l'implanteur
9.3.1. La structure de données du Buffer
9.3.2. Les utilitaires
9.3.3. L'écran
9.3.4. Les fenêtres
9.3.5. La modification
9.3.6. La structure de données du tampon
9.3.7. Les tampons
9.3.8. La configuration
9.3.9. Les modes
9.3.10. Les commandes
Références
Rubrique Perl-Javascript

Les utilitaires

fonctions externes

cmde : appelle l'éditeur : la commande demande un nom de fichier, auquel sera associé le premier Buffer à l'entrée sous l'éditeur.

re-cmde ou le macro-caractère % : rappel de l'éditeur, après une interruption (commande ^X-s).

cmde-init : initialisation ; à appeler une première fois avant tout appel de l'éditeur.

fonctions de saisies

cmde-int : interprétation des commandes.

cmde-rsp : interprétation d'un caractère.

cmde-err : commande inexistante (bell).

cmde-tyi : saisie d'un caractère.

cmde-get : recherche de la fonction attachée au caractère.

cmde-call : appel de la fonction attachée au caractère.

initialisation

cmde-init-0 : variables globales
initialisation des variables globales :

cmde-beg ancien début de page.
cmde-end ancienne fin de page.
cmde-curdeb ancien début de curseur.
cmde-curfin ancienne fin de curseur.
flag-cmde-key drapeau, vrai si en cours de définition de macro.
flag-cmde-keydef drapeau, vrai si la macro est définie.
flag-cmde-T drapeau, vrai si mode physique.
flag-kill drapeau, vrai si la dernière commande a touché au Kill Buffer.
ynkinfo-lst liste des liens du Kill Buffer.
flag-jst drapeau, vrai si mode justification.
flag-rch drapeau, vrai si mode recherche.
cmde-rechbuf dernier motif recherché.
flag-cmde-S-T drapeau, vrai si le dernier motif recherché contient des expressions régulières.
flag-msg drapeau :
0 : pas de message sur la ligne de contrôle,
1 : un message à détruire sur la ligne de contrôle,
2 : un message à laisser, le drapeau prend la valeur 1.
flag-aff drapeau, vrai si localement on affiche le curseur physique.
grsp liste des commandes qui composent la macro.
cmde-fin drapeau, vrai si fin de session.

fonctions d'appel des commandes
Elles ont toutes un paramètre fonctionnel ; on les utilise pour grouper la mise à jour des variables globales.

cmde-DEPABS ‹cmde-fun› : déplacement absolu du curseur – la fenêtre est recalée sur le curseur.

cmde-DEPFEN ‹cmde-fun› : déplacement absolu de la fenêtre – le curseur est recalé sur la fenêtre.

cmde-DEPREL-nxt ‹cmde-fun› : déplacement relatif du curseur vers l'avant.

cmde-DEPREL-prd ‹cmde-fun› : déplacement relatif du curseur vers l'arrière.

cmde-CMDE ‹cmde-fun› : pas d'effet immédiat (^L, ^X, ESC, ...).

cmde-STAT ‹cmde-fun› : pas de déplacement.

cmde-ZONE ‹cmde-fun› : pas de déplacement des curseurs – déplacement dans les fenêtres, ...

cmde-MSG ‹cmde-fun› : envoi d'un message.

cmde-MODIF ‹cmde-fun› : modification.

cmde-LECT ‹cmde-fun› : lecture.

fonctions de mise à jour des variables globales

cmde-nxt : positionnement, dans un déplacement vers l'avant.

cmde-prd : positionnement, dans un déplacement vers l'arrière.

cmde-ind : positionnement, dans un déplacement dans un sens indéterminé.

cmde-app-ON : entrer en mode « ajout ».

cmde-app-OFF : sortir du mode « ajout ».

cmde-eob-ON : entrer dans l'état « fin de Buffer ».

cmde-eob-OFF : sortir de l'état « fin de Buffer ».

cmde-aff-ON : entrer dans l'état « afficher localement le curseur physique ».

cmde-aff-OFF : sortir de l'état « afficher localement le curseur physique ».

cmde-msg-ON : entrer dans l'état « un message apparaît sur le ligne de contrôle ».

cmde-msg-OFF : sortir de l'état « un message apparaît sur le ligne de contrôle ».

cmde-phy : aficher ou non le curseur physique.

cmde-mod-ON ‹flag-fun› : modifier l'attribut de modification du Buffer pour la valeur "vraie" – ‹flag-fun› indique s'il y a lieu d'afficher la forme visuelle de l'attribut.

cmde-kil-ON : entrer dans l'état « la dernière commande touche au Kill Buffer ».

cmde-kil-OFF : sortir de l'état « la dernière commande touche au Kill Buffer ».

exit-bell : fin de commande : la commande est refusée.

exit-Abort : fin de commande : la commande est abandonnée (^G).
Note : dans les deux cas on sort de la boucle ERREUR d'interprétation de la commande.

append-err : la commande est refusée parce qu'on est en mode « ajout ».

mark-err : la commande est refusée parce que la marque n'a pas été posée dans le Buffer.

fonctions auxiliaires

affiche-cur : afficher le curseur du Buffer courant.

affiche-ecr : afficher l'écran.

affiche-ban : afficher la barre d'information (bannière) de la fenêtre courante.

affiche-ban-part : idem, incomplètement, pour "faire patienter" l'utilisateur.

affiche-ban-init : idem, incomplètement, à l'ouverture d'une fenêtre.

affiche-nom-abs-mem : afficher le nom absolu du Buffer dans la barre d'information.

aff>ban : afficher les holophrastes (logique et physique) – fenêtre de Buffer.

bell : bell.

aff>phy : afficher le curseur physique.

eff>phy : effacer le curseur physique.

aff>scr : afficher la zone de déroulement (scrolling).

aff>msg-cursor : afficher le message "<cursor>" sur la ligne de contrôle.

eff>msg-cursor : identique, effacer.

eff>end-of-line : effacer la fin de ligne.

clear-scroll ‹y1› ‹y2› : effacer la zone de déroulement entre les lignes d'écran ‹y1› et ‹y2›.

clear-region ‹y1› ‹y2› : effacer la région d'écran entre les lignes d'écran ‹y1› et ‹y2›.

cst-1 : numéro de ligne d'écran du début de fenêtre (défaut=1).

cst-20 : idem, de la fin de fenêtre (défaut=22).

cst-21 : idem, de la barre d'information de la fenêtre (défaut=23).

cst-22 : idem, de la ligne de contrôle (défaut=24).

cst-16 : nombre de lignes d'écran déroulées par un saut de page (défaut=18).

cst-8 : idem, par un demi-saut de page (défaut=10).

cst-60 : abscisse de "<cursor>" sur la ligne de contrôle (défaut=72).

min-80 ‹x› : taille de la ligne physique d'écran – minimum de ‹x› et d'une constante (défaut=79).

test-80 ‹x› : test, vrai si ‹x› dépasse la constante de taille de la ligne physique d'écran (défaut=79).

test-min-80 ‹x› : idem, si ‹x› égale la constante (défaut=79).

max-80 ‹x› : taille de la ligne logique (défaut=200).

test-max-80 ‹x› : test, vrai si ‹x› dépasse la constante de taille de la ligne logique (défaut=180).

liste-separ ‹car› ... : liste des caractères séparateurs de mots, en plus des caractères « », «"», «'», «(», «)», «;».

fonctions de dialogue

print-msg ‹msg› ... : afficher la liste de messages ‹msg› sur la ligne de contrôle.

print-bell ‹msg› ... : idem, et sonner.

print-prompt ‹msg› ... : idem, et appeler get-prompt.

print-ack ‹msg› ... : idem, et demander un acquittement "y".

print-msg-mem ‹x› ‹stg› : afficher la liste de codes ASCII ‹stg› à partir de la position ‹x› sur la ligne de contrôle – il s'agit des noms absolus de Buffer : si le nom est trop long, il est élidé.

print-msg-write ‹msg› ‹stg› : afficher le message ‹msg› et le nom de fichier ‹stg› – le nom de fichier est précédé du chemin absolu d'accès au fichier sous UNIX.

eff>msg : effacement du message de la ligne de contrôle ; si l'on est placé dans un mode, il se réaffiche l'indicateur de contrôle correspondant – sélection, « ajout », justification, recherche.

get-prompt : saisir un paramètre sur la ligne de contrôle ; caractères spéciaux :
^G   abandon,
^M   acquittement – une entrée vide est un cas d'erreur,
^H ou DEL détruire le caractère précédent,
^U   détruire les caractères précédents, jusqu'au premier caractère "/" rencontré.

get-prompt-mem : idem, pour la saisie d'un nom de Buffer – on a encore les caractères spéciaux :
^I   compléter jusqu'au premier Buffer-Edit,
" "   acquittement.

print-sequence ‹lst-msg› : afficher et saisir une liste de messages et de réponses pour les commandes assistées ; syntaxe des messages :

Stg saisir une chaîne de caractères.
Buf saisir un nom de Buffer.
Ok saisir un acquittement (caractère "y").
‹stg› afficher la chaîne de caractères ‹stg›.
(‹stg› ...) afficher les chaînes de caractères ‹stg›.
(selectq (‹stg1›...‹stgN›) (‹car1›...‹carN›) [‹stg›])
 saisir un choix : ‹stg1›...‹stgN› sont des messages, ‹car1›...‹carN› sont des codes ASCII valides, ‹stg› est un message optionnel.

Par exemple :

paramètre ‹lst-msg› :
((selectq ("Copy" "Move") (99 109) "to Kill Buffer")
 ":" (selectq ("Buffer" "Region") (98 114)) Ok)

suite des affichages :

Copy / Move to Kill Buffer ? ; réponse : c
Copy to Kill Buffer : Buffer / Region ? ; réponse : r
Copy to Kill Buffer : Region Ok ? ; réponse : y et "retour chariot"

MORE ‹instr› ... : évaluer les instructions ‹instr› avec des affichages du type "more".

fic-MORE ‹nom-fic› : afficher le contenu du fichier ‹nom-fic› par un affichage du type "more".

more-print ‹stg› : afficher la chaîne de caractères ‹stg› par un affichage du type "more" ; si les lignes de la fenêtre sont toutes remplies, on attend un acquittement de l'utilisateur pour poursuivre l'affichage :
^M   afficher la ligne suivante,
" " (blanc)   afficher la page suivante,
DEL   quitter.