flex: EOF
12 End-of-File Rules
********************
The special rule '<<EOF>>' indicates actions which are to be taken when
an end-of-file is encountered and 'yywrap()' returns non-zero (i.e.,
indicates no further files to process). The action must finish by doing
one of the following things:
* assigning 'yyin' to a new input file (in previous versions of
'flex', after doing the assignment you had to call the special
action 'YY_NEW_FILE'. This is no longer necessary.)
* executing a 'return' statement;
* executing the special 'yyterminate()' action.
* or, switching to a new buffer using 'yy_switch_to_buffer()' as
shown in the example above.
<<EOF>> rules may not be used with other patterns; they may only be
qualified with a list of start conditions. If an unqualified <<EOF>>
rule is given, it applies to _all_ start conditions which do not already
have <<EOF>> actions. To specify an <<EOF>> rule for only the initial
start condition, use:
<INITIAL><<EOF>>
These rules are useful for catching things like unclosed comments.
An example:
%x quote
%%
...other rules for dealing with quotes...
<quote><<EOF>> {
error( "unterminated quote" );
yyterminate();
}
<<EOF>> {
if ( *++filelist )
yyin = fopen( *filelist, "r" );
else
yyterminate();
}