When you use the Bison declaration %pure_parser to request a pure,
reentrant parser, the global communication variables yylval and
yylloc cannot be used. (See section A Pure (Reentrant) Parser.) In such parsers the
two global variables are replaced by pointers passed as arguments to
yylex. You must declare them as shown here, and pass the
information back by storing it through those pointers.
yylex (lvalp, llocp)
YYSTYPE *lvalp;
YYLTYPE *llocp;
{
...
*lvalp = value; /* Put value onto Bison stack. */
return INT; /* Return the type of the token. */
...
}
If the grammar file does not use the `@' constructs to refer to
textual positions, then the type YYLTYPE will not be defined. In
this case, omit the second argument; yylex will be called with
only one argument.