Вы имели в виду, что хотите, чтобы ваш анализатор сгенерировал аргументы командной строки? Затем вам нужно добавить эти аргументы в основную функцию. Вход лексера называется FILE* yyin
и инициализируется в лексере stdin
. Вы можете изменить поведение по умолчанию с помощью
#include <stdio.h>
extern FILE* yyin;
int main(int argv, char** argv)
{
if(argc==2)
{
yyin = fopen(argv[1], "r");
if(!yyin)
{
fprintf(stderr, "can't read file %s\n", argv[1]);
return 1;
}
}
yyparse();
}
Если вы хотите, чтобы ваша собственная функция выполнялась вместо функции, предоставляемой flex, вам нужно определить макрос YY_INPUT
.