Buenas a todos, soy un nuevo integrante del foro pero aún así voy a intentar ayudarte con lo que pides. Actualmente estoy cursando una asignatura de "procesadores del lenguaje". En esta asignatura la practica es hacer un compilador desde cero. Para ello se van a usar las herramientas comentadas antes por más gente JFlex, Bison, ...

Los pasos si no me equivoco son los sigiuentes:
1. Análisis Léxico: Comprobando que te lleguen los carácteres que tu admites y devolviendo TOKENS. Son cosas del tipo de IDENTIFICADOR, CONSTANTE, DEFVAR, ... (escribo en mayúsculas porque los tokens se escriben así por "convenio").

2. Análisis sintáctico: En este análisis compruebas las estructuras (ifs, construcciones de funciones,...) comprobando la gramatica del lenguaje y devuelves un AST (Abstract Sintact Tree) en el que se puede ver la estructura del programa

3. Análisis semántico: En el que se comprueban cosas de "significado" por ejemplo que una variable haya sido inicializada, conversiones de tipos, ... (esto lo tengo más verde así que tampoco puedo ser de gran ayuda)

4. Generación de código (ya sea ensamblador, ByteCodes de java, IL de .net, ...)

5. (opcional) optimizaciones de código.

Espero que te haya ayudado algo. Te recomiendo buscar en google "Procesadores de lenguaje" en las páginas de asignaturas así tienes mucha información.

Saludos