Bonjour!!
Je travail avec flex et yacc
je sais que la routine yylval est par defaut de type entiere mais je veux que flex me retourne une chaine de caractere alors j'ai declaré au niveau de yacc la structure suivante:
%union{char *ss;};
et quand flex trouve un identificateur il execute le code suivant:
{yylval.ss=yytext;
return(ID);}
ds yacc ID est declarer comme un terminal:
%token <ss> ID
Voila le code du fichier yacc
s:et s s {printf("%s%s%s",$1,$2,$3);}
|ID {printf("voila un identificateur");}
Le probleme est que si je donne cette chaine cmme une chaine d'entree : et id1 id2 au niveau de l'action sematique de la regle s:et s s je n'obtient que le deuxieme identificateur mais l'attribut associe au $2 est null!!!
Merci d'avance!!
Partager