Está en la página 1de 3

Anlisis Lexicogrfico (scanner)

Es la primera fase de un compilador consistente en un programa que recibe como entrada


el cdigo fuente de otro programa (secuencia de caracteres) y produce una salida
compuesta de tokens (componentes lxicos) o smbolos. Estos tokens sirven para una
posterior etapa del proceso de traduccin, siendo la entrada para el analizador
sintctico (en ingls parser). La especificacin de un lenguaje de programacin a menudo
incluye un conjunto de reglas que definen el lxico. Estas reglas consisten comnmente
en expresiones regulares que indican el conjunto de posibles secuencias de caracteres que
definen un token o lexema.
En algunos lenguajes de programacin es necesario establecer patrones para caracteres
especiales (como el espacio en blanco) que la gramtica pueda reconocer sin que
constituya un token en s.
Esta etapa est basada usualmente en una mquina de estados finitos. Esta mquina
contiene la informacin de las posibles secuencias de caracteres que puede conformar
cualquier token que sea parte del lenguaje (las instancias individuales de estas secuencias
de caracteres son denominados lexemas). Por ejemplo, un token de
naturaleza enteropuede contener cualquier secuencia de caracteres numricos.
Las tcnicas utilizadas para construir analizadores lxicos tambin se pueden aplicar a
otras reas, como, por ejemplo, a lenguajes de consulta y sistemas de recuperacin de
informacin. En cada aplicacin, el problema de fondo es la especificacin y diseo de
programas que ejecuten las acciones activadas por palabras que siguen ciertos patrones
dentro de las cadenas a reconocer. Como la programacin dirigida por patrones es de
mucha utilidad, se introduce un lenguaje de patrn-accin, llamado LEX, para especificar
los analizadores lxicos. En este lenguaje, los patrones se especifican por medio de
expresiones regulares, y un compilador de LEX puede generar un reconocedor de las
expresiones regulares mediante una autmata finito eficiente.

Por otro lado, una herramienta software que automatiza la construccin de analizadores
lxicos permite que personas con diferentes conocimientos utilicen la concordancia de
patrones en sus propias reas de aplicacin.

Funciones del Analizador Lxico

Convierte el programa fuente en una cadena de tokens.


Para reconocer el token usa un patrn, una regla que describe como se forman
las cadenas que corresponden a un token.
Salta comentarios y espacios en blanco (tabuladores, saltos de lnea...)
Tener el registro de la lnea del archivo fuente que est siendo analizada.
Genera mensajes de error lxico, y se recupera del error.
Convierte los valores literales al tipo que corresponda.
Si la entrada debe obedecer a un formato, verifica el
Formato.

Se encarga de buscar los componentes lxicos o palabras que componen el programa


fuente, segn unas reglas o patrones.
La entrada del analizador lxico podemos definirla como una secuencia de caracteres.

El analizador lxico tiene que dividir la secuencia de caracteres en palabras con


significado propio y despus convertirlo a una secuencia de terminales desde el punto de
vista del analizador sintctico, que es la entrada del analizador sintctico. El analizador
lxico reconoce las palabras en funcin de una gramtica regular de manera que sus NO
TERMINALES se convierten en los elementos de entrada de fases posteriores. En LEX,
por ejemplo, esta gramtica se expresa mediante expresiones regulares.

A manera de resumen, el analizador lxico es la primera fase de un compilador. Su


principal funcin consiste en leer los caracteres de entrada y elaborar como salida una
secuencia de componentes lxicos que utiliza el analizador sintctico para hacer el
anlisis. Esta interaccin, suele aplicarse convirtiendo al analizador lxico en una
subrutina o corrutina del analizador sintctico. Recibida la orden Dame el siguiente
componente lxico del analizador sintctico, el analizador lxico lee los caracteres de
entrada hasta que pueda identificar el siguiente componente lxico.

Interaccin de un analizador lxico con el analizador sintctico


Otras funciones que realiza:

Eliminar los comentarios del programa.


Eliminar espacios en blanco, tabuladores, retorno de carro, etc., y en general,
todo aquello que carezca de significado segn la sintaxis del lenguaje.
Reconocer los identificadores de usuario, nmeros, palabras reservadas del
lenguaje, y tratarlos correctamente con respecto a la tabla de smbolos (solo en
los casos que debe de tratar con la tabla de smbolos).
Llevar la cuenta del nmero de lnea por la que va leyendo, por si se produce
algn error, dar informacin sobre donde se ha producido.
Avisar de errores lxicos. Por ejemplo, si @ no pertenece al lenguaje, avisar de
un error.
Puede hacer funciones de preprocesador.

Bibliografa[editar]
Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D. (1998). Compiladores: Principios,
tcnicas y herramientas

También podría gustarte