Merci pour votre réponse,
Votre piste me parait intéressante, J'ai défini dans les règles de flex yytext avec %array, pour que cette variable ne soit plus un pointeur sur char mais un tableau de char. Je n'ai pas encore résolu mon problème, mais maintenant au lieu d'obtenir au final le header complet dans chaque espace mémoire de fonctions j'ai le résultat suivant dans le terminal :
valeur defaut fonction[0]:fctname
valeur defaut fonction[1]:fctname
valeur defaut fonction[2]:fctname
valeur defaut fonction[3]:fctname
valeur defaut fonction[4]:fctname
word :ifndef
word :HELLOWORLD
word :FLEX
word :define
word :HELLOWORLD
word :FLEX
word :extern
extern found
word :int
valeur data : int
mot a stocker : int
result : fonctions[1]=int
rappel : fonctions[2]=fctname
word :main
valeur data : main
mot a stocker : main
result : fonctions[2]=main
rappel : fonctions[2]=main
word :extern
extern found
word :int
valeur data : int
mot a stocker : int
result : fonctions[4]=int
rappel : fonctions[2]=int
word :calc
valeur data : calc
mot a stocker : calc
result : fonctions[5]=calc
rappel : fonctions[2]=calc
word :int
word :nombre
word :extern
extern found
word :float
valeur data : float
mot a stocker : float
result : fonctions[7]=float
rappel : fonctions[2]=float
word :testerpresent
valeur data : testerpresent
mot a stocker : testerpresent
result : fonctions[8]=testerpresent
rappel : fonctions[2]=testerpresent
word :endif
end of first parsing
fonction[0]:fctname
fonction[1]:
fonction[2]:
fonction[3]:fctname
fonction[4]:
fonction[5]:
fonction[6]:fctname
fonction[7]:
fonction[8]:
J'ai donc bien l'impression que toutes les cases où je mets data pointent vers la même chose et sont réactualisées à chaque changement de yytext.
Il faut donc que je trouve comment récupérer la valeur de yytext en évitant de pointer dessus par la suite. Sachant que yytext est maintenant un tableau et non un pointeur de char mais que allocationfonctions récupère toujours un char* en vue de compléter fonctions.
J'ai conscience que mon tableau fonctions est un tableau de pointeur, mais je n'ai pas vu d'autres façons de déclarer un tableau alloué dynamiquement et c'est un critère que je ne peux pas écarter en vue de parser n'importe quel fichier…
# possible raison et nouvelle problématique
Posté par NotsosmartChicken . En réponse au message Problème analyseur lexical flex. Évalué à 1.
Merci pour votre réponse,
Votre piste me parait intéressante, J'ai défini dans les règles de flex yytext avec %array, pour que cette variable ne soit plus un pointeur sur char mais un tableau de char. Je n'ai pas encore résolu mon problème, mais maintenant au lieu d'obtenir au final le header complet dans chaque espace mémoire de fonctions j'ai le résultat suivant dans le terminal :
J'ai donc bien l'impression que toutes les cases où je mets data pointent vers la même chose et sont réactualisées à chaque changement de yytext.
Il faut donc que je trouve comment récupérer la valeur de yytext en évitant de pointer dessus par la suite. Sachant que yytext est maintenant un tableau et non un pointeur de char mais que allocationfonctions récupère toujours un char* en vue de compléter fonctions.
J'ai conscience que mon tableau fonctions est un tableau de pointeur, mais je n'ai pas vu d'autres façons de déclarer un tableau alloué dynamiquement et c'est un critère que je ne peux pas écarter en vue de parser n'importe quel fichier…
Des idées pour arriver à joindre ces conditions ?
[^] # Re: balise de texte vs balise de code
Posté par NotsosmartChicken . En réponse au message Problème analyseur lexical flex. Évalué à 1.
OK merci. Je ne savais pas avec quel outil afficher le texte issu d'un terminal.
Et par rapport à mon problème, pas de piste ?