next up previous contents
suivant: Déroulement de l'exemple monter: Structure des données précédent: Pointeurs utilisés   Table des matières

Présentation de l'exemple

Nous allons ici détailler l'évolution de la structure de donnée avec l'exemple suivant :

conc(k(*a, *b), *c, k(*a, *d)) -> conc(*b, *c, *d);
Si l'on suppose que cette règle est la première du programme, voici une partie des différents points de générations traversés:
Debut_Session(); Regle() ;
Terme() ; Symbole("conc") ; Foncteur() ;
Terme() ; Symbole("k") ; Foncteur() ;
Terme() ; Symbole("a") ; Variable() ;
Terme() ; Symbole("b") ; Variable() ;
Fin_Foncteur() ;
Terme() ; /* points de génération correspondant à *c */
Terme() ; /* points de génération correspondant à k(*a, *d) */
Fin_Foncteur() ;
Paquet() ; Terme() ; /* points de génération correspondant à conc(*b, *c, *d) */
Fin_Regle() ;
Notre objectif n'étant pas de paraphraser le code écrit, nous ne revenons pas ici sur les différents champs des structures 1.1. Sur les différents schémas, ces champs seront nommés au-dessus ou en-dessous de la case correspondante. En outre, une flèche arrivant sur la gauche ou sur la droite d'un objet correspondra à un pointeur sur l'intégralité de cet objet, tandis qu'une flèche arrivant sur le haut ou le bas d'un objet sera un pointeur sur le champ correspondant de l'objet. Les autres notations se comprennent d'elles-mêmes.
next up previous contents
suivant: Déroulement de l'exemple monter: Structure des données précédent: Pointeurs utilisés   Table des matières
Alexandre DAGAN
2000-07-07