Способ сканирования области памяти описан в руководстве по Flex .
Flex изменяет буфер, заданный yy_scan_buffer
.Если вам необходимо избежать изменения, подойдет yy_scan_bytes
или yy_scan_string
.
Независимо от того, выполняется ли сканирование файла или области памяти независимо от синтаксического анализатора (бизона).
Если вашСбой lexer, я бы порекомендовал проверить, не выходит ли он из строя даже при чтении из файла.
Для вашей информации, следующий гибкий код печатает ab
и cd
в моей среде.
%%
[a-z]+ puts( yytext );
.
\n
%%
int yywrap( void ) { return 1; }
int main() {
yy_scan_string("ab cd");
yylex();
yy_delete_buffer( YY_CURRENT_BUFFER );
}