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

3. Les variables du Buffer

Une variable du Buffer est une "structure" à 4 champs :
- x : entier = abscisse,
- y : entier = ordonnée,
- col : colonne,
- lgn : ligne.

On a quatre règles de cohérence, qui sont normalement respectées :
- x = numéro de la colonne col dans la ligne lgn ;
- y = numéro absolu de la ligne lgn ;
- la colonne col appartient à la ligne lgn ;
- la ligne lgn appartient au Buffer

On adopte plusieurs choix de représentation selon la fréquence d'emploi des variables :

Les fonctions suivantes prennent en paramètres des expressions interprétées :
- pour un symbole : comme un symbole de représentation par les listes,
- pour un symbole quoté : comme un symbole de représentation symbolique,
- autrement, comme une représentation immédiate des champs x et y.

affectation du Buffer

set-glo ‹dest1› ‹orig1› ... : affecter à la variable ‹dest1› la valeur ‹orig1› – nombre quelconque (pair) d'arguments.

set-prd ‹dest› ‹orig› ‹tab› : affecter à ‹dest› le prédécesseur dans le Buffer de ‹orig›, ‹tab› étant l'abscisse de début de ligne du Buffer local – en cas de retour en fin de ligne précédente, ‹dest› est placé à une abscisse très grande.

set-mPRD ‹dest› ‹orig› ‹tab› : identique à set-prd, mais en cas de retour en fin de ligne précédente ‹dest› est placé en fin de ligne.

set-olgn ‹dest› ‹orig› : affecter à ‹dest› la position de fin de ligne précédente de ‹orig›, à une abscisse très grande.

set-mOLGN ‹dest› ‹orig› : identique à set-olgn, mais ‹dest› est placé en fin de ligne.

set-pred ‹dest› ‹orig› ‹tab› : identique à set-prd, mais un éventuel retour à ligne précédente n'est pas envisagé.

set-nxt ‹dest› ‹orig› : affecter à ‹dest› le successeur dans le Buffer de ‹orig›.

set-nlgn ‹dest› ‹orig› : affecter à ‹dest› la colonne de début de ligne suivante de ‹orig›.

set-succ ‹dest› ‹orig› : identique à set-nxt, mais un éventuel retour à ligne suivante n'est pas envisagé.

set-col ‹dest› ‹orig› ‹tab› : affecter à ‹dest› la colonne de numéro ‹tab› de la ligne de ‹orig›.

set-eol ‹dest› ‹orig› : affecter à ‹dest› la colonne de fin de ligne de la ligne de ‹orig›, à une abscisse très grande.

set-mEOL ‹dest› ‹orig› : identique à set-eol, mais ‹dest› est placé en fin de ligne.

set-bol ‹dest› ‹orig› : affecter à ‹dest› la colonne de début de ligne de la ligne de ‹orig›.

affectation de la page écran
La page écran utilise deux variables globales beg (début) et end (fin).

set-end : affecter à end sa valeur, compte tenu de la valeur de beg, de la taille du Buffer et de la taille de la fenêtre.

set-beg ‹num› : affecter à beg sa valeur, ‹num› lignes devant sa valeur actuelle, compte tenu de la taille du Buffer.

affectation du curseur

set-deb ‹dest› ‹info-lst› : affecter à ‹dest› la position de début du premier lien de ‹info-lst›.

set-fin ‹dest› ‹info-lst› : affecter à ‹dest› la position de fin du premier lien de ‹info-lst›.

info-debx ‹info-lst› : retourne le champ x de la position de début du premier lien de ‹info-lst›.

info-deby ‹info-lst› : idem, sur le champ y.

info-debcol ‹info-lst› : idem, sur le champ col.

info-deblgn ‹info-lst› : idem, sur le champ lgn.

info-finx ‹info-lst› : identique à info-debx, sur la position de fin du premier lien de ‹info-lst›.

info-finy ‹info-lst› : idem, sur le champ y.

info-fincol ‹info-lst› : idem, sur le champ col.

info-finlgn ‹info-lst› : idem, sur le champ lgn.

info-debp ‹x› ‹lgn› ‹info-lst› : retourne la valeur "vraie" si ‹x› ‹lgn› correspond à la position de début du premier lien de ‹info-lst›.

info-finp ‹x› ‹lgn› ‹info-lst› : identique à info-debp, sur la position de fin du premier lien de ‹info-lst›.

info-deb-eq ‹info-lst1› ‹info-lst2› : retourne la valeur "vraie" si ‹info-lst1› et ‹info-lst2› correspondent à une même position de début du premier lien.

info-fin-eq ‹info-lst1› ‹info-lst2› : identique à info-deb-eq, sur la position de fin du premier lien.

comparaison

glo-< ‹1› ‹2› : retourne la valeur "vraie" si ‹1› devance strictement ‹2› dans le Buffer – le test porte sur les champs entiers x et y ; les paramètres peuvent donc être de représentation immédiate.

glo-<= ‹1› ‹2› : idem, égale ou devance strictement.

glo-> ‹1› ‹2› : idem, suit strictement.

glo->= ‹1› ‹2› : idem, égale ou suit strictement.