преждевременная ошибка в файле flex - PullRequest
13 голосов
/ 22 ноября 2011

У меня есть следующий код, и он выдает ошибку "" 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);
}

Ответы [ 2 ]

24 голосов
/ 22 ноября 2011

Проблема с вашим %} - гибкость очень чувствительна к расстоянию. Уберите пространство перед ним, и все должно быть хорошо.

Кроме того, если вам не нужна функция yywrap, вы можете вставить %option noyywrap в свой файл flex.

5 голосов
/ 22 ноября 2011

Изменить это:

%{

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

  %}

К этому:

%{

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

%}

Работает с flex 2.5.35 (mingw)

...