EOF在动作LEX程序中遇到

时间:2017-02-09 05:32:51

标签: flex-lexer yacc lex eof

我有一个lex程序如下。我遇到错误

  

在动作LEX程序中遇到EOF

%{
#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);}

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

如果您在文本末尾有一个EOF而没有使用行尾结束最后一行,则经常会出现此错误,但它也可能与系统有关,因此很难在其他系统上重现。

确保最后一行后面有一个空行,错误可能会消失。