在动作 LEX 程序中遇到 EOF

Sah*_*har 0 yacc lex eof flex-lexer

我有一个 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);}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

Bri*_*汤莱恩 5

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

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