在我YACC文件,我有這樣的:'YYSTYPE' 沒有成員
%union {
Node *node;
FuncParamList *fParam;
CallParamList *cParam;
char *str;
struct {
char *name;
Node *node;
} nameNodePair;
}
這是我萊克斯文件(請注意,它包括由YACC生成的頭文件):
%{
#include "yacc_parser.hh"
%}
%%
if return IF;
ei return ELSEIF;
else return ELSE;
endif return ENDIF;
while return WHILE;
loop return LOOP;
func return FUNC;
end return END;
:= return ASSIGN;
\. return DOT;
, return COMMA;
: return COLON;
\( return OPAREN;
\) return CPAREN;
(\n|\r\n?) { /* increment line count */ return LF; }
; return LF;
[!?A-Za-z][!?A-Za-z0-9] { yylval.str = yytext; return NAME; }
[0-9]+ { yylval.str = yytext; return INTEGER; }
%%
但是,我得到這個錯誤,當我編譯:
/home/michael/Projects/lang/lib/lex_lexer.l:26:9: error: ‘YYSTYPE’ has no member named ‘str’
/home/michael/Projects/lang/lib/lex_lexer.l:27:9: error: ‘YYSTYPE’ has no member named ‘str’
我確信,在YACC頭文件包含了YYSTYPE定義和萊克斯輸出文件不INC在使用YYSTYPE之前使用它。我該怎麼辦?
什麼是您的YYSTYPE定義? – 2011-04-05 13:37:19
@ M'vy你是什麼意思?我發佈了它! – mtk358 2011-04-05 13:42:05
所以%union是在頭文件中?只是想確定這一點。 – 2011-04-05 13:48:37