Flex - Yacc:对“YY_CURRENT_BUFFER”的未定义引用

Flex - Yacc: undefined reference to `YY_CURRENT_BUFFER'

我正在使用 Flex-Yacc 制作一个编译器,目前我正在尝试制作一个缓冲系统来帮助我实现 for 和 while 循环。我已阅读 Flex 手册 (here) 当我在我的 yacc 文件中使用 YY_CURRENT_BUFFER 并编译它时,我得到 undefined reference to YY_CURRENT_BUFFER。如何在我的代码中 declare/include 这个?我找了很多,但我似乎找不到它。

"YY_CURRENT_BUFFER" 不是变量,而是词法分析器本地的宏(它不在 lex --header-file 生成的 header 中导出,它扩展为使用静态变量的表达式(即 lex.yy.c 的局部变量,不是全局变量,无法从其他源文件访问)。

您应该将所有使用 "YY_CURRENT_BUFFER" 的代码包装在词法分析器 (*.l) 文件中的一个函数中,将其定义放入解析器 (*.y) 中包含的 header ) 文件,并直接使用该函数而不是 "YY_CURRENT_BUFFER"。