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文件中.
改变这个:
%{
#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)