Вы определили main
в обоих ваших файлах, но C допускает только одно определение main
в программе, о чем говорит вам ошибка компоновщика.
main
в вашем файле сканера имеет недопустимый прототип (C почти два года не допускает определения функций без возвращаемого типа), а также вызывает yylex
только один раз, что мало что даст. Так что это выглядит довольно хорошо, бессмысленно. Если вы хотите отладить ваш сканер без использования парсера, вы можете связать сканер с -lfl
; эта библиотека содержит определение main
, которое неоднократно вызывает yylex
до тех пор, пока не будет сообщено конец файла.
Вместо того, чтобы рассеивать вызовы printf
через ваш сканер, вы можете просто создать отладочную версию сканера, используя флаг --debug
при создании сканера. Это распечатает след всех действий сканера.