Salut tout le monde,
Alord voilà j'ai un souci au niveau de la création de certains noeuds quand l'arité est >0 par exemple.
Je m'explique j'ai un noeud qui est décrit comme ça dans ma grammire :
void Noeud() #Noeud(>0) : {}
{
A() (
(B())? (C())? D() #E(>0)
|....
)*
}
En fait il faudrait que dans mon ASA, le noeud E est entre 1 et 4 fils : A, B (ou pas), C (ou pas) et D, le problème c'est que quand je mets E(>0), A n'est pas le fils de E, il est au même niveau.
J'ai résolu provisoirement le pb en obligeant les 4 noeuds à chaque fois (avec B et C qui peuvent être vides)
Du coup j'ai ça :
void Noeud() #Noeud(>0) : {}
{
A() (
B() C() D() #E(4)
|....
)*
}
Comme ça mon noeud E a toujours 4 fils (A B C et D) mais le problème avec cette solution c'est que je crée des noeuds qui ne servent à rien et ça me pose des problèmes après au niveau de l'implantation des visiteurs...
Si qqun sait pkoi ça ne marche pas avec le >0 et a une solution je suis preneuse parce que ça fait un scaré moment que je me prends la tête!!!
Merci d'avance...
Message édité par ptitemat le 19-05-2004 à 09:58:21