flex文件中的早期eof错误

Was*_*eem 13 c bison lexical-analysis flex-lexer

我有以下代码,它给出错误""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);
}
Run Code Online (Sandbox Code Playgroud)

bar*_*adu 24

问题是你的%}- flex 对间距非常敏感.删除前面的空间,一切都应该很好.

此外,如果您不想使用yywrap功能,则可以粘贴%option noyywrap在Flex文件中.


INS*_*INS 6

改变这个:

%{

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

  %}
Run Code Online (Sandbox Code Playgroud)

对此:

%{

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

%}
Run Code Online (Sandbox Code Playgroud)

适用于flex 2.5.35(mingw)