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

La modification

les fonctions externes : insertion

caract-ins ‹flag-fen› ‹flag-O› ‹deb› ‹num› ‹hol› ‹info-lst› ‹car› ... : insérer des caractères :

‹flag-fen› drapeau, vrai si une fenêtre est ouverte sur le Buffer modifié.
‹flag-O› drapeau, vrai si l'insertion est réalisée devant le curseur (commande ^O).
‹deb› variable de début d'insertion.
‹num› nombre d'insertions répétées.
‹hol› holophraste d'insertion.
‹info-lst› liste des liens d'insertion sous l'holophraste considéré.
‹car› ... liste des caractères ‹car› ... à insérer.

caract-ins-LF ‹flag-fen› ‹flag-O› ‹deb› ‹hol› ‹info-lst› : insérer un retour à la ligne :
pour les paramètres cf. caract-ins.

caract-ins-buf ‹flag-fen› ‹flag-O› ‹deb› ‹hol› ‹info-lst›

caract-ins-buf ‹cpyhol› ‹cpydebcol› ‹cpydeblgn› ‹cpyregx› ‹cpyfincol› : insérer une zone de Buffer :
pour les premiers paramètres cf. caract-ins.

‹cpyhol› holophraste de la zone copiée.
‹cpydebcol› colonne de début de la zone copiée.
‹cpydeblgn› ligne de début de la zone copiée.
‹cpydebx› abscisse du premier caractère du Buffer local de la zone copiée.
‹cpyfincol› colonne de fin de la zone copiée.

caract-ins-ynk ‹flag-O›

caract-ins-ynk ‹cpyhol› ‹cpydebcol› ‹cpydeblgn› ‹cpyregx› ‹cpyfincol› : insérer une zone de Buffer dans le Kill Buffer :
pour les paramètres cf. caract-ins-buf.

caract-ins-fic ‹flag-fen› ‹flag-O› ‹deb› ‹hol› ‹info-lst› ‹grep› : insérer un fichier :
pour les premiers paramètres cf. caract-ins.

‹grep› variable tampon de la représentation du texte lu dans le fichier.

les fonctions externes : suppression

caract-cursup ‹flag-fen› ‹deb› ‹fin› ‹hol› ‹info-lst› : détruire une zone du Buffer :

‹flag-fen› drapeau, vrai si une fenêtre est ouverte sur le Buffer modifié.
‹deb› variable du début de la zone à détruire.
‹fin› variable de la fin de la zone à détruire.
‹hol› holophraste de la zone à détruire.
‹info-lst› liste des liens de la zone à détruire sous l'holophraste considéré.

les fonctions externes : écriture sur fichier

caract-write ‹hol› ‹info-lst› ‹flag-app› : écrire le Buffer local d'holophraste ‹hol› de liste des liens ‹info-lst› :

‹flag-app› drapeau, vrai si l'écriture est faite en ajout dans le fichier.

caract-write-flat ‹hol› ‹info-lst› : écrire à plat le Buffer local d'holophraste ‹hol› de liste des liens ‹info-lst›.

les fonctions externes : détermination des zones

det>caract-sup ‹fin› ‹num› ‹hol› ‹info-lst› : retourne le début de la zone qui contient ‹num› curseurs et qui finit sur ‹fin›, sous l'holophraste ‹hol› dans la liste des liens ‹info-lst› (commande ^D par exemple).

det>caract-del ‹deb› ‹num› ‹hol› ‹info-lst› : identique à det>caract-sup, retourne la fin de la zone qui contient ‹num› curseurs et qui débute sur ‹deb› (commande ^H par exemple).

det>region ‹deb› : retourne sur les variables auxiliaires auxdeb et auxfin les début et fin de la région – la zone comprise entre le curseur courant et la marque.

les fonctions internes : insertion
Le graphe d'appel des fonctions est le suivant :

Graphe d'appel - fonctions internes d'insertion

MODIF-ins : commande d'insertion.

caract-fin : mise à jour des variables globales du curseur, de la marque, ..., et affichage.

caract-aux-<ins> et -<fin> : modification sur les curseurs qui suivent le point d'insertion – sur une même vraie ligne.

caract-lgn-<ins> et -<fin> : insertion éventuelle de lignes.

aux>caract-ins et -fin : insertion de caractères.

aux>caract-ins-LF : insertion d'un caractère de retour à la ligne LF.

aux>caract-ins-buf : insertion d'un Buffer.

aux>caract-ins-fic : insertion d'un fichier.

les fonctions internes : suppression
Le graphe d'appel des fonctions est le suivant :

Graphe d'appel - fonctions internes de suppression

MODIF-sup : commande de suppression.

caract-fin : cf. précédemment.

caract-aux-<sup> et -<fin> : cf. caract-aux-<ins>.

caract-lgn-<sup> et -<fin> : suppression éventuelle de lignes.

aux>caract-sup et -fin : suppression de caractères, sur une même ligne.

les fonctions internes : boucles
Les fonctions de boucles traitent des vraies lignes du Buffer – cf. précédemment sur les commandes ESC-n et ESC-p.

boucle-ins ‹num› : paramètres implicites : auxcol auxlgn auxhol auxinfo-lst ;

reçoit :
‹num› nombre de caractères insérés.
auxcol auxlgn colonne et ligne de début d'insertion.
auxhol auxinfo-lst holophraste et liste des liens du point d'insertion.
renvoie :
auxcol auxlgn colonne et ligne de début du dernier point modifié par l'insertion.
auxhol auxinfo-lst holophraste et liste des liens du dernier point modifié par l'insertion.
Le dernier point d'insertion tient compte de la vraie ligne : c'est le premier caractère de début de ligne qui ne dépend pas du point de début d'insertion.

boucle-del ‹num› : paramètres implicites : auxcol auxlgn auxhol auxinfo-lst ;
identique à boucle-ins, ‹num› étant le nombre de caractères supprimés.

boucle-sel ‹num› : paramètres implicites : auxcol auxlgn auxhol auxinfo-lst ;
identique à boucle-ins, concernant une sélection validée (commande ^X-^@) ; ‹num› est l'abscisse de début du curseur défini par la sélection – qu'on cherche à rendre maximal.

boucle-flt : paramètres implicites : auxcol auxlgn auxhol auxinfo-lst ;
identique à boucle-ins, concernant l'aplatissement d'un curseur (commande ^X-  (blanc)).

les fonctions internes : boucles générales

boucle-COPY ‹hol›

boucle-COPY ‹origcol› ‹origlgn› ‹origregx› ‹origfincol›

boucle-COPY ‹destcol› ‹destlgn› ‹destx› ‹destregx› ‹destinfo-lst› :

copie de l'origine :
‹hol› holophraste.
‹origcol› colonne de début de la zone copiée.
‹origlgn› ligne de début de la zone copiée.
‹origregx› abscisse de début du Buffer local de la zone copiée.
‹origfincol› colonne de fin de la zone copiée.
vers le destinataire :
‹destcol› colonne du point d'insertion.
‹destlgn› ligne du point d'insertion.
‹destx› abscisse du point d'insertion.
‹destregx› abscisse de début du Buffer local du point d'insertion.
‹destinfo-lst› liste des liens du point d'insertion.

boucle-NEXT ‹num› ‹hol›

boucle-NEXT ‹origcol› ‹origlgn› ‹origregx› ‹origfincol› :
retourne le début de ligne de la ‹num›-ième vraie ligne suivant l'origine.

boucle-ERASE ‹num› ‹hol›

boucle-ERASE ‹origcol› ‹origlgn› ‹origregx› ‹origfincol› :
retourne le ‹num›-ième curseur suivant l'origine.

les fonctions auxiliaires : mise à jour des variables

caract-clean-log ‹num› : paramètre implicite : auxlgn ;
met à jour la variable du curseur logique log :

‹num› nombre de lignes insérées.
auxlgn première vraie ligne non modifiée.

caract-clean ‹num› ‹loc› : paramètre implicite : auxlgn ;
identique à caract-clean-log, sur une variable quelconque ‹loc›.

caract-aux ‹num› : détermine la nouvelle page et les nouveaux curseurs.

caract-fin ‹hol› : détermine si le curseur logique doit être considéré comme étant en fin de ligne.

caract-curfin : retourne le numéro de ligne qui suit le curseur.

aff>caract-fin : réalise l'affichage après modification ; variables globales :

MODIF-tot drapeau, vrai si l'on réaffiche entièrement la fenêtre.
MODIF-y1 numéro de la première ligne du Buffer à réafficher.
MODIF-y2 numéro de la dernière ligne du Buffer à réafficher.

aff>caract ‹num› ‹deby› ‹finy› : met à jour les variables globales de réaffichage :

‹num› nombre de lignes modifiées.
‹deby› numéro de la première ligne modifiée.
‹finy› numéro de la dernière ligne modifiée.

aff>ligne-mod ‹y1› ‹y2› : affichage des lignes, entre les numéros ‹y1› et ‹y2›.