Compiler construction lex错误y.tab.h

Compiler construction lex错误y.tab.h,compiler-construction,lex,Compiler Construction,Lex,我正在尝试使此示例代码正常工作,但不断出现错误: 致命错误:找不到“y.tab.h”文件 #包括“y.tab.h”。我能做些什么 %{ #include <stdlib.h> void yyerror(char *); #include "y.tab.h" %} %% [0-9]+ { yylval = atoi(yytext); return INTEGER; } [-

我正在尝试使此示例代码正常工作,但不断出现错误: 致命错误:找不到“y.tab.h”文件 #包括“y.tab.h”。我能做些什么

%{
#include <stdlib.h>
void yyerror(char *);
#include "y.tab.h"
%}


%% [0-9]+     {
                 yylval = atoi(yytext);
                 return INTEGER;
               }


[-+\n]         return *yytext;



[ \t]        ; /* skip whitespace */


.            yyerror("invalid character");


%%




int yywrap(void) {
return 1;
}
%{
#包括
无效错误(字符*);
#包括“y.tab.h”
%}
%% [0-9]+     {
yylval=atoi(yytext);
返回整数;
}
[-+\n]返回*yytext;
[\t];/*跳过空白*/
.            yyerror(“无效字符”);
%%
int-yywrap(无效){
返回1;
}

您正在使用的yacc文件可能正在创建一个名为“y.tab.c”的输出文件,而不是您试图在此处包含的“y.tab.h”。您可能应该尝试更改它。

flex文件中包含的“y.tab.h”文件是在您使用-dy运行bison时生成的。 例如:

然后您应该将它们一起编译:

gcc lex.yy.c myparser.tab.c -o mycompiler.exe

呃,生成它?你有yacc语法吗?所以在编译任何东西之前,先在上面运行yacc。
gcc lex.yy.c myparser.tab.c -o mycompiler.exe