

<<EOF>> permite asociar acciones que se deban 
ejecutar cuando se ha encontrado un end of file y la 
macro yywrap() ha devuelto un valor no nulo. 
Cualquiera que sea, la acción asociada deberá de optar por una de estas cuatro alternativas:
yyin a un nuevo fichero de entrada
return
yyterminate() (véase  la sección 2.10)
yy_switch_buffer (véase  la sección 2.21).
El patrón <<EOF>> no puede usarse con otras expresiones regulares. Sin embargo, es correcto prefijarlo con estados.
Si  <<EOF>> aparece sin condiciones de arranque, la regla se aplica a todos los estados que no tienen una regla  <<EOF>> específica.
Si lo que se quiere es que la regla se restringa al ámbito del estado inicial se deberá escribir:
<INITIAL><<EOF>> 
Sigue un programa que reconoce los comentarios anidados en C.
Para detectar comentarios incacabados usaremos  <<EOF>>.
%option stack
%x comment
%%
"/*"   { yy_push_state(comment); }
(.|\n) ECHO;
<comment>"/*"     { yy_push_state(comment); } 
<comment>"*/"     { yy_pop_state(); } 
<comment>(.|\n)   ;
<comment><<EOF>>  { fprintf(stderr,"Error\n"); exit(1); }
%%
$ cat hello.c
main() {
int a[1]; /* a /* nested comment */. */
  a[0] = 4; /* a  /* nested comment in
                 /* two */ lines  */ *****/
}                                                   
$ flex nestedcom.l ; gcc lex.yy.c -lfl ; a.out < hello.c
main() {
int a[1];
  a[0] = 4;
}
$ cat hello4.c
main() {
int a[1]; /* a /* nested comment */. */
  a[0] = 4; /* an  /* incorrectly nested comment in
                 /* two  lines  */ *****/
}
$ a.out < hello4.c
main() {
int a[1];
Error
  a[0] = 4;

