Как использовать функции flex вне файла lex.l? - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть две функции, которые выглядят так:

void init_analysis(){
    yyin = stdin;
    flag_console = TRUE;
    line = 1;
    yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE ));
}

void terminate_analysis(){
    yypop_buffer_state();
}

Они находятся внутри файла с именем lex.l, который при компиляции с помощью команды 'flex lex.l' создает файл с именем lex.yy.c.Я хочу объявить и реализовать эти две функции вне этого файла lex.l в файле с именем, например, utilities.c с соответствующим ему utilities.h.Проблема в том, что я не могу переместить эти две функции в другой файл, потому что у них есть функции, такие как yypop_buffer_state и типы данных, такие как YY_BUFFER_STATE, которые не определены в новом файле. Я хочу переместить функции (эти элементы определены только в lex.yy.cфайл).Как я могу переместить эти функции?Спасибо за ваши ответы.

1 Ответ

0 голосов
/ 22 ноября 2018

Согласно документации для flex, вы можете использовать следующий параметр при запуске flex

--header-file=my_flex_header_file.h

, который генерирует заголовочный файл, который вы можете включить в другие ваши файлы.

...