6

このサンプルコードを機能させようとしていますが、エラーが発生し続けます: 致命的なエラー: 'y.tab.h' ファイルが見つかりません #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

-dy を指定して bison を実行すると、flex ファイルに含まれる「y.tab.h」ファイルが生成されます。例:

flex mylex.l
bison -dy myparser.y

次に、両方を一緒にコンパイルする必要があります。

gcc lex.yy.c myparser.tab.c -o mycompiler.exe
于 2014-05-12T18:12:53.177 に答える