Функция, определенная (f) lex, называется yylex
.yyparse
создается с помощью bison / yacc, который, по-видимому, вы не используете.
Flex получает данные от yyin
, объявленного как:
extern FILE* yyin;
Так что этого недостаточнопросто позвонить fopen
;вам нужно присвоить возвращаемое значение yyin
.Вы также должны убедиться, что вызов fopen
выполнен успешно:
yyin = fopen("filename.txt","r");
if (yyin == NULL) {
fprintf(stderr, "Could not open 'filename.txt': %s\n", strerror(errno));
exit(1);
}
Кстати, [TD]
распознает либо T
, либо D
.Таким образом, при вводе TD
ваше правило будет печатать TD
дважды.