Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yacc找不到YY_当前_缓冲区_C_Bison_Lex_Flex Lexer - Fatal编程技术网

Yacc找不到YY_当前_缓冲区

Yacc找不到YY_当前_缓冲区,c,bison,lex,flex-lexer,C,Bison,Lex,Flex Lexer,我将在本网站上介绍如何使用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,顺便说一下,我是从bison文件(.y)调用它们的,所以它们应该

我将在本网站上介绍如何使用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,顺便说一下,我是从bison文件(.y)调用它们的,所以它们应该是可用的。
我不知道为什么找不到typedefs。我没有在google上的前十几个链接上找到任何东西,任何帮助都将不胜感激。

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


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

必须包含该头文件…运行yacc会生成一个yy.h文件。@H2CO3我没有从bison生成任何文件yy.h。我将其重新标记为“gnu Flex”,因为我认为它与Adobe/Apache Flex框架无关。@yzernik滚动标记。gnu Flex是“Flex(快速词法分析器)”,Flex是“Flex是在Flash Player或Adobe Air上运行的快速富Internet应用程序开发框架”。我已经将词法分析器上的其他问题重新标记为gnu Flex;但是如果你觉得它们应该分类不同,请告诉我,这样我就不会对事物进行错误的分类。