3

我正在关注本网站上有关如何使用 flex 解析字符串的其他示例:

yy_scan_string(string);
yylex();
yyparse(); 
yy_delete_buffer( YY_CURRENT_BUFFER );

第 4 行给出了它所说的问题

 error: ‘YY_CURRENT_BUFFER’ undeclared (first use in this function)

我也没有得到 YY_BUFFER_STATE,顺便说一下,我是从野牛文件 (.y) 中调用它们的,所以它们应该可用。我不确定为什么它没有找到 typedef。我没有在谷歌的前十几个链接上想出任何东西任何帮助将不胜感激。

4

1 回答 1

4

YY_CURRENT_BUFFER并且YY_BUFFER_STATE由 flex 定义,而不是 bison,因此它们在lex.yy.cflex 生成的文件中定义(和使用)。因此,您只能从文件中访问它们.l,而不能从.y文件中访问它们。

如果您想以野牛语法访问它们,最简单的方法是将它们的使用封装在您在.l文件第 3 部分中定义的小函数中。.y然后从文件或任何其他源文件中调用该函数。

于 2012-09-08T04:17:18.080 回答