Next: Interfacing with Yacc, Previous: Miscellaneous Macros, Up: flex [Contents][Index]
This chapter 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
unput()
, which potentially destroy its value when yytext
is
a character pointer. The opposite of %array
is %pointer
,
which is the default.
You cannot use %array
when generating C++ scanner classes (the
‘-+’ flag).
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.
Next: Interfacing with Yacc, Previous: Miscellaneous Macros, Up: flex [Contents][Index]