Node:Token Values, Next:Token Positions, Previous:Calling Convention, Up:Lexical
In an ordinary (non-reentrant) parser, the semantic value of the token must
be stored into the global variable yylval. When you are using
just one data type for semantic values, yylval has that type.
Thus, if the type is int (the default), you might write this in
yylex:
... yylval = value; /* Put value onto Bison stack. */ return INT; /* Return the type of the token. */ ...
When you are using multiple data types, yylval's type is a union
made from the %union declaration (see The Collection of Value Types). So when
you store a token's value, you must use the proper member of the union.
If the %union declaration looks like this:
%union {
int intval;
double val;
symrec *tptr;
}
then the code in yylex might look like this:
... yylval.intval = value; /* Put value onto Bison stack. */ return INT; /* Return the type of the token. */ ...