2017-02-09 36 views
-1

У меня есть программа lex следующим образом. Я сталкиваюсь ошибкуEOF встречается внутри программы LEX

EOF встречается внутри действия программы LEX

%{ 
#include<stdio.h> 
#include<math.h> 
#include "y.tab.h" 
%} 
%% 
[ \t]+ ; 
[0-9]+ {yylval = atoi(yytext); 
return INTEGER;} 
[-+*/] {return *yytext;} 
"(" {return *yytext;} 
")" {return *yytext;} 
\n {return *yytext;} 
. {char msg[25]; 
sprintf(msg,"%s <%s>","invalid character",yytext); 
yyerror(msg);} 

Может кто-нибудь мне помочь?

+0

Я не вижу ничего плохого в этом файле. Обычно ошибка означает, что у вас отсутствует '}', но в этом случае я скопировал данные из вашего вопроса на свою машину, и flex скомпилировал ее без жалобы. Это точно так же, как ваш файл? – rici

ответ

2

Эта ошибка часто возникает, если у вас есть EOF в конце текста, не заканчивая последней строкой с концевой строкой, но она также может быть зависящей от системы, что затрудняет воспроизведение в других системах.

Убедитесь, что после последней строки есть пустая строка, и ошибка, вероятно, исчезнет.