Next: Textual Locations of Tokens, Previous: Finding Tokens by String Literals, Up: The Lexical Analyzer Function yylex [Contents][Index]
In an ordinary (nonreentrant) 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 kind of the token. */ …
When you are using multiple data types, yylval’s type is a union made
from the %union declaration (see The Union Declaration). 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 kind of the token. */ …