【问题标题】:premature eof error in flex fileflex文件中的过早eof错误
【发布时间】:2012-01-03 20:21:12
【问题描述】:

我有以下代码,当我运行以下命令时,它会给出错误““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);
}

【问题讨论】:

    标签: c bison lexical-analysis flex-lexer


    【解决方案1】:

    问题在于您的%} - flex 对间距非常敏感。去掉前面的空格,一切都会好起来的。

    另外,如果你不想要一个 yywrap 函数,你可以在你的 flex 文件中粘贴%option noyywrap

    【讨论】:

    • 你能告诉我如何在 dev-C++ 中运行编译 lex.yy.c 和 y.tab.c 文件吗?
    【解决方案2】:

    改变这个:

    %{
    
      #include <stdlib.h>
      #include "y.tab.h"
    
      %}
    

    到这里:

    %{
    
      #include <stdlib.h>
      #include "y.tab.h"
    
    %}
    

    它适用于 flex 2.5.35 (mingw)

    【讨论】:

      猜你喜欢
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 2019-12-31
      相关资源
      最近更新 更多