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.