This chapter summarizes the various values available to the user in the rule actions.
If the special directive
%array appears in the first section of
the scanner description, then
yytext is instead declared
char yytext[YYLMAX], where
YYLMAX is a macro definition
that you can redefine in the first section if you don't like the default
value (generally 8KB). Using
%array results in somewhat slower
scanners, but the value of
yytext becomes immune to calls to
unput(), which potentially destroy its value when
a character pointer. The opposite of
which is the default.
You cannot use
%array when generating C++ scanner classes (the
flexreads from. It may be redefined but doing so only makes sense before scanning begins or after an EOF has been encountered. Changing it in the midst of scanning will have unexpected results since
flexbuffers its input; use
yyrestart()instead. Once scanning terminates because an end-of-file has been seen, you can assign yyin at the new input file and then call the scanner again to continue scanning.
void yyrestart( FILE *new_file )
yyrestart()with yyin as an argument thus throws away the current input buffer and continues scanning the same input file.
ECHOactions are done. It can be reassigned by the user.
YY_BUFFER_STATEhandle to the current buffer.
BEGINto return to that start condition.