$ cat input.l %% "/*" { int c; for(;;) { while ((c=input()) != '*' && c != EOF) ; if (c == '*') { while ((c = input()) == '*') ; if (c == '/') break; } if (c == EOF) { fprintf(stderr,"Error: EOF in comment"); yyterminate(); } } }La función
yyterminate()
termina la rutina de análisis léxico y devuelve un cero indicándole a la rutina que llama que todo se ha acabado.
Por defecto, yyterminate()
es llamada cuando se encuentra
un final de fichero. Es una macro y puede ser redefinida.
$ flex input.l ; gcc lex.yy.c -lfl ; a.out hello /* world */ hello unfinished /* comment unfinished Error: EOF in commentHe presionado CTRL-D después de entrar la palabra comment.