如何在 lex.l 文件之外使用 flex 函数?
How to use flex functions outside the lex.l file?
我有两个函数如下所示:
void init_analysis(){
yyin = stdin;
flag_console = TRUE;
line = 1;
yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE ));
}
void terminate_analysis(){
yypop_buffer_state();
}
它们位于一个名为 lex.l 的文件中,当使用命令 'flex lex.l' 编译时会生成一个名为 lex.yy.c 的文件。我想要做的是在这个文件 lex.l 之外的一个文件中声明和实现这两个函数,例如 utilities.c 及其相应的文件 utilities.h。问题是我无法将这两个函数移动到另一个文件,因为它们具有 yypop_buffer_state 之类的函数和 YY_BUFFER_STATE 之类的数据类型,这些在新文件中未定义我想移动函数(这些元素只是在 lex.yy.c 文件中定义)。我怎样才能移动这些功能?
谢谢你的回答。
根据 flex 的文档,您可以在 运行 flex
时使用以下参数
--header-file=my_flex_header_file.h
它会生成一个头文件,您可以将其包含在其他文件中。
我有两个函数如下所示:
void init_analysis(){
yyin = stdin;
flag_console = TRUE;
line = 1;
yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE ));
}
void terminate_analysis(){
yypop_buffer_state();
}
它们位于一个名为 lex.l 的文件中,当使用命令 'flex lex.l' 编译时会生成一个名为 lex.yy.c 的文件。我想要做的是在这个文件 lex.l 之外的一个文件中声明和实现这两个函数,例如 utilities.c 及其相应的文件 utilities.h。问题是我无法将这两个函数移动到另一个文件,因为它们具有 yypop_buffer_state 之类的函数和 YY_BUFFER_STATE 之类的数据类型,这些在新文件中未定义我想移动函数(这些元素只是在 lex.yy.c 文件中定义)。我怎样才能移动这些功能? 谢谢你的回答。
根据 flex 的文档,您可以在 运行 flex
时使用以下参数--header-file=my_flex_header_file.h
它会生成一个头文件,您可以将其包含在其他文件中。