2011-11-22 12 views
12

Aşağıdaki kod var ve onu bir hata " 'hello.l', satır 31 verir: prematüre EOF" Ben şu komutunu esnek hello.lprematüre eof hata

%{ 

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

cevap

19

çalıştırdığınızda Sorun, %} ile ilgilidir - flex boşluk yaklaşık çok duyarlıdır. Önündeki boşluğu kaldırın ve hepsi iyi olmalı.

Ayrıca, bir yywrap işlevi istemiyorsanız, flex dosyanıza %option noyywrap yapıştırabilirsiniz.

%{ 

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

    %} 

Buna: Bu

+0

nasıl hem lex.yy. derlemek çalıştırmak için bana söyleyebilir c ve y.tab.c dosyaları dev-C++? – Waseem

5

Değişim

%{ 

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

%} 

Bu esnek 2.5.35 (mingw) ile çalışır