6

我试图让这个示例代码工作,但我不断收到错误:致命错误:'y.tab.h' file not found #include "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;
}
4

2 回答 2

6

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

flex mylex.l
bison -dy myparser.y

那么你应该一起编译它们:

gcc lex.yy.c myparser.tab.c -o mycompiler.exe
于 2014-05-12T18:12:53.177 回答
0

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

于 2013-04-15T03:25:51.580 回答