«YY_CURRENT_BUFFER» - это не переменная, а макрос, локальный для лексера (он не экспортируется в заголовок, сгенерированный lex --header-file
, и расширяется до выражения с использованием статических переменных (т. Е. Переменных, локальных для lex.yy). .c, не глобальный, недоступный из других исходных файлов).
Вы должны обернуть весь код, использующий "YY_CURRENT_BUFFER", в функцию в файле lexer (* .l), поместить его определение в заголовок, включенный в файл синтаксического анализатора (* .y), и использовать эту функцию вместо "YY_CURRENT_BUFFER" напрямую.