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.11.1. Les fonctions de lecture
9.3.11.2. Les fonctions de modification
9.3.11.3. Les variables 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 structure de données du Buffer

 structure de données du Buffer

1. Les fonctions de lecture

2. Les fonctions de modification

3. Les variables du Buffer

2. Les fonctions de modification

le Buffer

cons-bof-lgn : construit un début de Buffer.

cons-eof-lgn ‹col› ‹lgn› ‹x› : construit une fin de Buffer, sur la colonne ‹col› de numéro ‹x› sur la ligne ‹lgn›.

cons-eol-lgn ‹info-lst› ‹flag-nil› ‹lgn› ‹col<› ‹x<› ‹>col› ‹>x› : construit une fin de ligne (caractère de retour à la ligne LF) et retourne la ligne suivante :

‹info-lst› liste des liens du caractère LF.
‹flag-nil› drapeau :
- vrai : on remplit le champ d'information des colonnes,
- faux : on ne le remplit pas – cas des colonnes hors de la zone d'accès.
‹lgn› ligne à finir.
‹col<› dernière colonne de la ligne – avant le LF.
‹x<› numéro de ‹col<› dans ‹lgn›.
‹>col› première colonne de la ligne suivante.
‹>x› numéro de ‹>col› dans la ligne suivante.

la colonne

ins-col ‹col› ‹lgn› : insérer une colonne sur la colonne ‹col› de la ligne ‹lgn›.

insérer une colonne - avant

donne
insérer une colonne - après

del-col ‹col› ‹lgn› : détruire la colonne ‹col› de la ligne ‹lgn›.

détruire une colonne - avant

donne
détruire une colonne - après

la ligne

unir-lgn ‹num› ‹lgn<› ‹col<› ‹>lgn› ‹>col› ‹lgrlgn›
unir des lignes :

‹num› nombre de lignes détruites.
‹lgn<› ligne de "réception".
‹col<› colonne de "réception".
‹>lgn› ligne d'"envoi".
‹>col› colonne d'"envoi".
‹lgrlgn› longueur de la ligne de réception – après union.
unir deux lignes - avant

donne
unir deux lignes - après

fermer-lgn ‹hol› ‹info-lst› ‹oldfinlgn› ‹oldfinx› ‹newfinlgn› ‹newfinx›
unir des lignes :

‹hol› holophraste de début de fermeture.
‹info-lst› liste des liens de début de fermeture – sous l'holophraste hol.
‹oldfinlgn› ancienne ligne fermée.
‹oldfinx› ancien numéro de la colonne fermée dans la ligne oldfinlgn.
‹newfinlgn› nouvelle ligne ouverte.
‹newfinx› nouveau numéro de la colonne ouverte dans la ligne newfinlgn.

La fonction retourne l'holophraste de fermeture.

Fermer une ligne consiste, partant d'une liste de liens et d'un holophraste donnés, à remplacer dans les liens les champs finlgn et numfincol par leur nouvelle valeur new ; l'holophraste retourné est celui du premier lien pour lequel les champs n'ont pas l'ancienne valeur old.

ouvrir-lgn ‹lgn› ‹col›
ouvrir la ligne ‹lgn› sur la colonne ‹col› ; retourne la nouvelle ligne.

ouvrir une ligne - avant

donne
ouvrir une ligne - après

completer-lgn ‹col› ‹x›
compléter la ligne sur la colonne ‹col› de numéro ‹x› ; on ajoute un nombre fixe, assez grand, de colonnes derrière ‹col›.

clean-lgn ‹hol› ‹oldlgn› ‹newlgn› ‹col› ‹x›
nettoyer la ligne :

‹hol› holophraste de début de nettoyage.
‹oldlgn› ancienne ligne à nettoyer.
‹newlgn› nouvelle ligne à substituer à l'ancienne.
‹col› colonne de début de nettoyage.
‹x› numéro de la colonne col dans la ligne.

Nettoyer une ligne c'est remplacer les liens "physiques" deblgn et finlgn sur l'ancienne ligne ‹oldlgn› par la nouvelle ligne ‹newlgn›.

l'information

set-info ‹col› ‹car› ‹info-lst› : fixer l'information de la colonne ‹col› : le caractère ‹car› et la liste de liens ‹info-lst›.

set-info-nil ‹col› : fixer l'information de la colonne ‹col› – cas des colonnes hors de la zone d'accès.

set-info-car ‹col› ‹car› : fixer l'information de « caractère » de la colonne ‹col› à ‹car›.

set-info-lst ‹col› ‹car› : fixer l'information de « liste de liens » de la colonne ‹col› à ‹info-lst›.

set-info-lst-nil ‹col› : fixer l'information de « liste de liens » de la colonne ‹col› à la liste vide.

set-info ‹hol› ‹col› ‹info-lst› : remplacer l'information de « liste de liens » de la colonne ‹col› par la liste de liens ‹info-lst› sous l'holophraste ‹hol›.

la liste de liens

cons-info-lst ‹debx› ‹deblgn› ‹finx› ‹finlgn› ‹info-lst› : retourne la liste de liens construite par le lien ‹debx› ‹deblgn› ‹finx› ‹finlgn› suivi de la liste ‹info-lst›.

cons-info-lst-deb ‹debx› ‹deblgn› ‹info-lst› : retourne la liste de liens construite par le lien ‹debx› ‹deblgn› suivi de la liste ‹info-lst› ; on ne remplit que les champs de début du lien.

cons-info-lst-fin ‹info-lst› ‹finx› ‹finlgn› : remplace dans la liste de liens ‹info-lst› le premier lien par ‹finx› ‹finlgn› ; on ne remplace que les champs de fin du lien – cette fonction complète cons-info-lst-deb.

incr-numdebcol ‹num› ‹info-ref› : incrémenter de ‹num› le champ numdebcol du lien ‹info-ref›.

incr-numfincol ‹num› ‹info-ref› : idem, incrémenter le champ numfincol.

decr-numdebcol ‹num› ‹info-ref› : idem, décrémenter le champ numdebcol.

decr-numfincol ‹num› ‹info-ref› : idem, décrémenter le champ numfincol.