Si en verdad pretendes hacer un compilador entonces lo mejor es emplear algo diseñado para eso, como Lex y Yacc, que son para hacer exactamente el analizador léxico y sintáctico.
Doy por supuesto que además, estás cursando la cátedra de compiladores... y que además ya estuviste haciendo al menos en papel parte de la gramática y algunas expresiones reguales y autómatas infinitos como de práctica para luego volcar lo aprendido en Lex o Yacc (ya no recuerdo cual era cual
)
Si se trata justamente de poner en práctica la teoría de compiladores, y que te hayan pedido un analizador léxico para una gramática (sea de un lenguaje hipotético o real) me cuesta creer que la forma en como lo estás encarando sea válida
¿Porqué no nos comentas para que cátedra es el trabajo?
Si es como sospecho, de compiladores, ¿Hasta que temas han llegado a ver? ¿No les han mostrado siquiera para que son Lex y Yacc? Me sería extraño que le pidan que codifiquen un analizador... y sobre todo con tantas licencias para volcar en la práctica como tu en la forma tan "casera" que lo estás llevando.
Si te explicas y nos comentas más al respecto podríamos ver para donde van los tiros.
Saludos,