2011-11-22 10 views
12

tengo el siguiente código y da un error " "hello.l", línea 31: EOF prematura" cuando corro el siguiente comando hello.l flexerror EF prematura de archivo flex

%{ 

    #include <stdlib.h> 
    #include "y.tab.h" 

    %} 

%% 

("hi"|"oi")"\n"  {return HI; } 
("tchau"|"bye")"\n" {return BYE;} 
.     {yyerror(); } 

%% 

int main(void) 
{ 
    yyparse(); 
    return 0; 
} 

int yywrap(void) 
{ 
    return 0; 
} 

int yyerror(void) 
{ 
    printf("Error\n"); 
    exit(1); 
} 

Respuesta

19

El problema es con su %} - flex es muy sensible sobre el espaciado. Retire el espacio que tiene delante y todo debería estar bien.

Además, si no desea una función yywrap, puede pegar %option noyywrap en su archivo flex.

+0

¿Me puede decir cómo ejecutar compilar tanto lex.yy. c y y.tab.c archivos en dev-C++? – Waseem

5

cambiar esta situación:

%{ 

    #include <stdlib.h> 
    #include "y.tab.h" 

    %} 

A esto:

%{ 

    #include <stdlib.h> 
    #include "y.tab.h" 

%} 

Funciona con flex 5.2.35 (MinGW)

Cuestiones relacionadas