私は字句解析とパーサー生成に不慣れで、ウィキペディアからバイソンの例をコンパイルすることから直接始めようとしました。これは再入可能パーサーの例です。
bison の 2 つのバージョン (2.5 と 2.6.5) でコンパイルしようとしました。前者は完全にコンパイルおよび実行されますが、後者にはyyscan_t
、レクサー ヘッダー (Lexer.h) で宣言されているパーサー ヘッダーに型が含まれています (再入可能機能には必要だと思います)。Parser.c
したがって、によって生成されたコンパイルは行われませんParser.y
Parser.h
2.5 には存在しない、2.6.5 によって生成された余分な部分を次に示します。
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
int yyparse (void *YYPARSE_PARAM);
#else
int yyparse ();
#endif
#else /* ! YYPARSE_PARAM */
#if defined __STDC__ || defined __cplusplus
int yyparse (SExpression **expression, yyscan_t scanner); // this line
#else
int yyparse ();
#endif
#endif /* ! YYPARSE_PARAM */
問題の原因となっている行をマークしました。何かご意見は?
yyscan_t
編集:バイソンによって生成されたヘッダーファイルで宣言されていることを確認する必要があります。