OVH Cloud OVH Cloud

[Bison] chaîne de caractères

1 réponse
Avatar
zarak
Bonjour,

Je cherche à récuper sous Bison la valeur d'un lexème sous forme de
chaîne de caractères.

Ex :

char* ident

S : truc machin identifiant chose { ident = $3 }

Je sais que Yacc/Bison met les valeurs des lexèmes dans les $n en type
long et j'aimerais connaître le moyen de les récuper en chaînes de caractère.
J'ai déjà essayé pas mal de choses, alors ce serait sympa de me répondre
avec précision.

Merci d'avance.

1 réponse

Avatar
Éric Lévénez
Le 1/01/04 21:10, dans <bt1urq$lal$, « zarak »
<*enlevez-ceci-pour-repondre* a écrit :

Je cherche à récuper sous Bison la valeur d'un lexème sous forme de
chaîne de caractères.


Ici on parle de C standard, donc rien sur lex/yacc et ses clones.

Ex :

char* ident

S : truc machin identifiant chose { ident = $3 }

Je sais que Yacc/Bison met les valeurs des lexèmes dans les $n en type
long et j'aimerais connaître le moyen de les récuper en chaînes de caractère.
J'ai déjà essayé pas mal de choses, alors ce serait sympa de me répondre
avec précision.


<hs>
Regarde comment redéfinir YYSTYPE dans n'importe quelle doc yacc. Un truc du
genre :

%union {
long val;
char * ident;
};

Et dans lex/flex tu copies la chaîne yytext dans yylval.ident (allocation,
tout ça...)
</>

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.