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

Paquets et règles

Les paquets regroupent les différentes règles ayant le même type de partie gauche, c'est-à-dire possédant le même nom de foncteur (il ne peut pas y avoir de variable, voir section 1.6.2) et le même nombre d'arguments. Ainsi, le paquet définissant le prédicat de concaténation de listes se présenterait comme à la figure 1.10

Figure: Seconde règle pour la concaténation
\includegraphics [scale=0.5]{/home/alex/Cours1999-2000/Projet_Compil/Rapport/Schemas/schema10.eps}

Partant de cette situation, l'utilisateur peut commencer la définition d'un nouveau prédicat, en ajoutant une règle n'ayant pas la même partie gauche. Tant que la flèche de cette nouvelle règle n'a pas été lue, cette règle reste chaînée à la précédente (cf. figure 1.11)

Figure: Chaînage d'une nouvelle règle d'un autre paquet
\includegraphics [scale=0.5]{/home/alex/Cours1999-2000/Projet_Compil/Rapport/Schemas/schema11.eps}

C'est après la lecture de la flèche que l'on passe par le point de génération Paquet(). Le compilateur s'aperçoit alors qu'il faut créer un nouveau paquet. Il est également nécessaire de rompre le lien entre la dernière règle de conc et la première de arc ; on utilise pour cela regle_avant, comme indiqué à la figure 1.12

Figure: Chaînage des règles de différents paquets rompu
\includegraphics [scale=0.5]{/home/alex/Cours1999-2000/Projet_Compil/Rapport/Schemas/schema12.eps}

Il n'est pas possible de détecter les changements de paquet plus tôt. En effet, il faut avoir lue la parenthèse terminant la partie gauche d'une règle1.2 pour connaître le nombre d'arguments du foncteur.
next up previous contents
suivant: Types de phrases monter: Structure des données précédent: Déroulement de l'exemple   Table des matières
Alexandre DAGAN
2000-07-07