2011-11-22 67 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文件中。

+0

你能告訴我如何運行編譯兩個lex.yy.在dev-C++中的c和y.tab.c文件? – Waseem

5

更改此:

%{ 

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

    %} 

要這樣:

%{ 

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

%} 

它與柔性2.5.35(MinGW的)