2011-11-22 4 views
12

나는 다음과 같은 코드를 가지고 있고 그것은 오류 ""hello.l ", 줄 31 제공 : 조기 EOF를"나는 다음과 같은 명령을 플렉스 hello.l조기 EOF 오류

%{ 

    #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); 
} 

답변

19

을 실행할 때 문제는 귀하의 %}입니다. - flex는 매우 약입니다. 그 전에 공간을 제거하고 모두 잘되어야합니다.

또한 yywrap 기능을 원하지 않는 경우 %option noyywrap을 flex 파일에 저장할 수 있습니다.

%{ 

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

    %} 

이 사람 :이

+0

를 어떻게 모두 lex.yy.를 컴파일 실행하는 말해 줄 수 dev-C++의 c 및 y.tab.c 파일? – Waseem

5

변경

%{ 

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

%} 

그것은 플렉스 2.5.35 (와 Mingw)와 함께 작동