Но valgrind в сгенерированном токенизаторе находит утечку памяти: если скомпилированную программу запустить и дать ей пустой файл, то получится сразу три лишних malloc() без free().
Лечится принудительным вызовом yylex_destroy() после завершения работы токенизатора.