7.Values available to the user in action section
This section summarizes the
various values available to the user in the rule actions.
char *yytext holds the text
of the current token. It may be modified but not lengthened (you
cannot append characters to the end).
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 input() and unput(), which
potentially destroy its value when yytext is a character
pointer. The opposite of %array is %pointer, which is the
default.
int yyleng holds the length of the current
token.
FILE *yyin is the file
which by default flex reads 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 flex buffers 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
) may be called to point yyin at the new input file. The
switch-over to the new file is immediate (any previously buffered-up
input is lost). Note that calling yyrestart() with yyin as an
argument thus throws away the current input buffer and continues
scanning the same input file.
FILE *yyout is the file to which ECHO
actions are done. It can be reassigned by the user.
YY_CURRENT_BUFFER returns a YY_BUFFER_STATE
handle to the current buffer.
YY_START returns an integer value
corresponding to the current start condition. You can subsequently
use this value with BEGIN to return to that start condition.
Comments
Post a Comment