No tienes que separarlos. La gente los combina en analizadores sin escáner .
La desventaja clave de los analizadores sin escáner parece ser que las gramáticas resultantes son bastante complicadas, más complicadas que la combinación correspondiente de una expresión regular que hace lexing y una gramática libre de contexto que analiza en el token-stream. En particular, las gramáticas para el análisis sin escáner tienden a la ambigüedad. Es más fácil eliminar la ambigüedad para las gramáticas que trabajan en un token-stream.
Un beneficio pragmático de usar una fase de lexing inicial dedicada es que no combina el analizador posterior con detalles léxicos. Esto es útil durante el desarrollo temprano del lenguaje de programación, cuando los detalles léxicos y sintácticos todavía cambian con frecuencia.