我有一个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);}
有人可以帮帮我吗?
答案 0 :(得分:2)
如果您在文本末尾有一个EOF而没有使用行尾结束最后一行,则经常会出现此错误,但它也可能与系统有关,因此很难在其他系统上重现。
确保最后一行后面有一个空行,错误可能会消失。