1. 4.4 Errores Léxicos
El análisis léxico constituye la primera fase, aquí se lee el programa fuente
de izquierda a derecha y se agrupa en componentes léxicos (tokens), que
son secuencias de caracteres que tienen un significado. Además, todos los
espacios en blanco, líneas en blanco, comentarios y demás información
innecesaria se elimina del programa fuente. También se comprueba que los
símbolos del lenguaje (palabras clave, operadores,) se han escrito
correctamente.
Como la tarea que realiza el analizador léxico es un caso especial de
coincidencia de patrones, se necesitan los métodos de especificación y
reconocimiento de patrones, y estos métodos son principalmente las
expresiones regulares y los autómatas finitos. Sin embargo, un analizador
léxico también es la parte del traductor que maneja la entrada del código
fuente, y puesto que esta entrada a menudo involucra un importante gasto
de tiempo, el analizador léxico debe funcionar de manera tan eficiente como
sea posible.
Son pocos los errores simplemente en el nivel léxico ya que tiene una visión
muy restringida de un programa fuente. El analizador léxico debe devolver
el componente léxico de un identificador y dejar a otra fase se ocupe de los
errores.
Suponga que una situación en la cual el analizador léxico no puede
continuar porque ninguno de los patrones concuerda con un prefijo de la
entrada. Tal vez la estrategia de recuperación más sencilla sea
recuperación “EN MODO PANICO” (este método de recuperación es donde
se borra caracteres sucesivos de la entrada hasta que el analizador léxico
pueda encontrar un componente léxico bien formado).
2. 4.5 Generadores Léxicos
Un analizador léxico o analizador lexicográfico (en inglés scanner o
tokenizer) es la primera fase de un compilador, consistente en un programa
que recibe como entrada el código fuente de otro programa (secuencia de
caracteres) y produce una salida compuesta de tokens (componentes
léxicos) o símbolos. Estos tokens sirven para una posterior etapa del
proceso de traducción, siendo la entrada para el analizador sintáctico (en
inglés parser).
La especificación de un lenguaje de programación a menudo incluye un
conjunto de reglas que definen el léxico. Estas reglas consisten
comúnmente en expresiones regulares que indican el conjunto de posibles
secuencias de caracteres que definen un token o lexema.
En algunos lenguajes de programación es necesario establecer patrones
para caracteres especiales (como el espacio en blanco) que la gramática
pueda reconocer sin que constituya un token en sí.