










Sig: REJECT
Sup: Expresiones Regulares en Flex
Ant: unput()
Err: Si hallas una errata ...
input()
La función input() lee desde el flujo de entrada
el siguiente carácter. Normalmente la utilizaremos si queremos
tomar ``personalmente el control'' del análisis. El ejemplo
permite ``engullir'' los comentarios (no anidados):
$ 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 comment
He presionado CTRL-D después de entrar la palabra comment.











Sig: REJECT
Sup: Expresiones Regulares en Flex
Ant: unput()
Err: Si hallas una errata ...
Casiano Rodríguez León
2012-05-22