我對yacc編譯器有疑問。我不編譯簡單的yacc語法。這裏是代碼部分:簡單的yacc語法給出錯誤
/*anbn_0.y */
%token A B
%%
start: anbn '\n' {printf(" is in anbn_0\n");
return 0;}
anbn: empty
| A anbn B
;
empty: ;
%%
#include "lex.yy.c"
yyerror(s)
char *s;
{ printf("%s, it is not in anbn_0\n", s);
我使用mac os x和,我嘗試喲命令; $ yacc anbn_0.y
然後 $ gcc -o anbn_0 y.tab.c -ll
並給我錯誤。這是錯誤;
warning: implicit declaration of function 'yylex' is invalid in C99 [-Wimplicit-function-declaration]
yychar = YYLEX;
爲什麼我得到一個錯誤?
你沒有收到錯誤 - 這是一個警告。它幾乎是不言自明的 - 你運行的yacc版本是按照舊C89標準(甚至更早)生成代碼,而不是更新的C99標準。 –