 
 
 
 
 
 
 
 
 
 










 
 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