FlexとBisonを一緒に使いたいです。レクサーで使用するbison定義ファイルで結合を宣言しました。Bisonは、ユニオン宣言を含む.tab.hファイルを生成します(以下を参照)。この.tab.hファイルをレクサー定義にインクルードしますが、レクサーアクションは次のとおりです。
yylval.stringptr = yytext;
コンパイラエラーが発生します:
lexer.l: In function ‘yylex’:
lexer.l:190: error: request for member ‘stringptr’ in something not a structure or union
.tab.hファイルのスニペットは次のとおりです。
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
/* Line 1676 of yacc.c */
#line 9 "parser.y"
char * s;
char * stringptr;
double d;
int i;
/* Line 1676 of yacc.c */
#line 126 "parser.tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
extern YYSTYPE yylval;
yylvalが構造体または結合として認識されないのはなぜですか?どうすれば問題を修正できますか?
PS:--bison-bridgeを使用してFlexを呼び出しました