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

चलाने समस्या आपके %} के साथ है - फ्लेक्स बहुत अंतर के बारे में संवेदनशील है। इससे पहले अंतरिक्ष हटा दें, और सभी अच्छी तरह से होना चाहिए।

इसके अलावा, अगर आप एक वाईव्रैप फ़ंक्शन नहीं चाहते हैं, तो आप अपनी फ्लेक्स फ़ाइल में %option noyywrap चिपक सकते हैं।

+0

आप मुझे बताओ कि दोनों lex.yy. संकलन को चलाने के लिए कर सकते हैं सी और y.tab.c फाइल dev-C++ में? – Waseem

5

बदलें इस:

%{ 

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

    %} 

इस के लिए:

%{ 

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

%} 

यह फ्लेक्स 2.5.35 (MinGW) के साथ काम करता

संबंधित मुद्दे