Buen en general lo que tenes que hacer es primero usar jlex y cup para leer el archivo fuente con una estructura definida como por ejemplo
E->e+e
|e*e etc.
la aplicacion debe saber cual es terminal y no terminal, por ejemplo E es terminal y e,+ son simbolos no terminales, deberias saber donde empieza tu gamatica , e ir introduciendo cada simbolo en una lista como un objeto Vector por ejemplo, no se si ya sabes la teoria de esto que esta en el libro del dragon "Compiladores" principios y tecnicas y herramientas de Aho y sethi, entonces en tu vector tambien deberias llevar el punto con lo cual analizas los estados y vas generando la tabla de transicion de estados automaticamente, cuando tengas la tabla de estados de transiciones
usas regex para ir analizando las cadenas que vienen.