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. */ …