2011-11-22 13 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

問題はあなたの%}です - フレックスは非常にスペーシングに敏感です。その前のスペースを取り除くと、すべてがうまくいくはずです。

また、yywrap機能を使用しない場合は、フレックスファイルに%option noyywrapを貼ることができます。

+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の)で動作します

関連する問題