Proceso del análisis léxico

El proceso de análisis léxico se refiere al trabajo que realiza el scanner con relación al proceso de compilación. El scanner representa una interfaz entre el programa fuente y el analizador sintáctico o parser.

El scanner, a través del examen carácter por carácter del texto, separa el programa fuente en piezas llamadas tokens, los cuales representan los nombres de las variables, operadores, etiquetas, y todo lo que comprende el programa fuente.

El parser, usualmente genera un árbol de sintaxis del programa fuente como ha sido definido por una gramática.

Las hojas del árbol son símbolos terminales de la gramática. Son esos símbolos terminales o tokens los que el scanner extrae del código fuente y se los pasa al parser.

Es posible para el parser usar el conjunto de caracteres terminales del lenguaje como el conjunto de tokens, pero ya que los tokens pueden ser definidos en términos de gramáticas regulares más simples que en las gramáticas más complejas utilizadas por los parsers, es deseable usar scanners.

Usar solo parsers es costoso en términos de tiempo de ejecución y requerimientos de memoria, y la complejidad y el tiempo de ejecución puede reducirse con el uso de un scanner.

La separación entre análisis léxico (scanning) y análisis sintáctico (parsing) puede tener también otras ventajas.

El análisis léxico de caracteres generalmente es lento en los compiladores, y separándolo del componente de análisis semántico de la compilación, el énfasis particular puede darse para hacer más eficiente el proceso.