suivant: Types de phrases
monter: Structure des données
précédent: Déroulement de l'exemple
  Table des matières
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
|
|
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
|
|
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
|
|
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.
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