Ответ 1
Проблема с вашим %}
- flex очень чувствительна к интервалу. Удалите пространство перед ним, и все должно быть хорошо.
Кроме того, если вам не нужна функция yywrap, вы можете вставить %option noyywrap
в свой файл flex.
У меня есть следующий код и он дает ошибку "hello.l", строка 31: преждевременный EOF", когда я запускаю следующую команду flex hello.l
%{
#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);
}
Проблема с вашим %}
- flex очень чувствительна к интервалу. Удалите пространство перед ним, и все должно быть хорошо.
Кроме того, если вам не нужна функция yywrap, вы можете вставить %option noyywrap
в свой файл flex.
Измените это:
%{
#include <stdlib.h>
#include "y.tab.h"
%}
Для этого:
%{
#include <stdlib.h>
#include "y.tab.h"
%}
Он работает с flex 2.5.35 (mingw)