Вам действительно понадобится сканер (также называемый токенизатором или лексером). Обычно это делается с помощью lex, если вы используете yacc, или flex (для файла .l), если вы используете bison (для файла .y).
Сканер должен вывести все токены, определенные в вашем файле yacc (директивы% token, а также содержимое в одинарных кавычках).
Чтобы начать, добавьте следующее в файл .l и запустите на нем flex, затем посмотрите на заголовки и еще много чего для информации, а затем скомпилируйте выходные данные .c
%{
#include "y.tab.h"
// other stuff for your program
%}
%%
else return ELSE; // correspond to the %token's in your yacc file
if return IF;
int return INT;
// other ones at the top of your yacc file
%%
// any c-code helper functions to do fancy scanning.
Это довольно простой пример, он почти всегда усложняется, но должен помочь вам начать.
Учебное пособие см. http://dinosaur.compilertools.net/
Веселись!