Sie sind auf Seite 1von 5

2.

Anlisis Lxico
2.1 Utilidad del anlisis lxico
Se puede utilizar para interpretar cdigo HTML, para interpretar un archivo de tipo .ini, etc.
El analizador lxico lee del fichero de entrada los caracteres secuencialmente y los agrupa en
tokens con un significado conocido por el programador.
Hace las funciones de preprocesador tambin, ya que elimina los caracteres innecesarios para el
proceso de compilacin.
Permite obtener estructuras similares aun cuando los caracteres de entrada no lo sean.
En resumen:
Agrupa caracteres segn categoras establecidas por la especificacin del lenguaje fuente.
Rechaza texto con caracteres ilegales o agrupados segn un criterio no especificado.

2.2 Funcionamiento
El funcionamiento del analizador lxico es:
Construir tokens validos a partir de la lectura carcter a carcter del fichero de entrada.
Pasar tokens validos al analizador sintctico.
Gestionar el manejo del fichero de entrada.
Ignorar los espacios en blanco, comentarios y dems caracteres o tokens innecesarios ara
el proceso de anlisis.
Avisar de los errores encontrados a esta fase.
Llevar la cuenta del nmero de lnea para incluirlos en el aviso de error.
Hacer las funciones de preprocesador.

Durante el proceso, el analizador lxico guarda los caracteres que lee en el buffer. Cuando
encuentra un carcter que no le sirve se detiene y enva los caracteres al analizador sintctico,
mientras espera una nueva peticin de lectura. Cuando la recibe, limpia el buffer y vuelve a leer el
carcter donde se detuvo la vez anterior.



2.3 Trminos utilizados
Patrn:
Representacin lgica de una serie de agrupacin de caracteres con caractersticas comunes.
Se utilizan expresiones regulares, que son una manera de ver las entradas vlidas para un
autmata, por ejemplo, un identificador, que es cualquier combinacin de letras y nmeros que
no comiencen con un nmero.
Lexema:
Cada una de las combinaciones de caracteres que encajan en la definicin de un patrn.
En el ejemplo de un identificador, variable1, x, y12 encajan perfectamente.
Token:
Nombre que se le da a cada patrn definido. Representa lexemas.
Atributo:
Caractersticas propias al tipo del token.

2.4 Especificacin del analizador lxico
Para comprender el funcionamiento del analizador lxico, se especifica como una mquina de
estados, llamada diagrama de transiciones o DT con las siguientes caractersticas.
Debe leer la secuencia hasta completar un token y retornar luego ese token, dejando la
entrada preparada para otro token.
Cada secuencia no determinada es un error.
Los estados de aceptacin deben ser terminales.
Cuando se lee un carcter que no pertenezca a ninguna secuencia especificada, se debe ir a un
estado especial terminal y volver el cursor de lectura de caracteres al carcter siguiente a la
secuencia correcta.

2.5 Construccin de un analizador lxico
Hay algunas maneras de construir un analizador lxico, puede ser utilizando diagramas de
transiciones o utilizando programas especiales que construyen analizadores a partir de pocas
lneas de especificacin.

2.5.1 Identificar las palabras reservadas
Se tiene que poder diferenciar un identificador de una palabra reservada por lo que se pueden
llevar a cabo, al menos, dos mtodos:
Hacer una tabla con todas las palabras reservadas y consultarla para cada identificador y ver si
est en la tabla o no.
Implementar cada una de las palabras reservadas en el DT para diferenciarlas del resto de
identificadores, haciendo complicada su programacin.

2.5.2 Construir el diagrama de transiciones
A partir del autmata es relativamente sencillo llegar a la implementacin del algoritmo de
reconocimiento. Un primer paso es representar el autmata en una tabla de transiciones.
En el ejemplo de hacer un analizador lxico para un lenguaje que reconoce nmeros enteros sin
signo, suma, incremento y producto, se deben realizar los siguientes pasos.
Definir patrones o expresiones regulares:

Entero ::= (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)
+

[El
+
indica uno o ms de uno]
Suma ::= (+)
Producto ::= (*)
Incremento ::= (++)




Una vez definidos los patrones, se crea el autmata que los reconoce:











Los estados de aceptacin estn marcados con un circulo doble, en maysculas el nombre del
token, el asterisco indica que el puntero que seala la lectura del siguiente carcter debe
retroceder una unidad.
Cuando se llega a un estado de aceptacin, se pasa el token al analizador sintctico y se esperara
una nueva peticin de este para comenzar otra vez en el estado 0 del autmata.
Una vez realizado esto, y que funciona correctamente, se crea una tabla de transiciones la cual
consta de tantas filas como estados el autmata y de columnas para numerar estado, las posibles
entradas, para sealar el token y para numerar los retrocesos que hay que hacer.
Una vez obtenida la tabla, la implementacin obtiene cada estado buscando el estado que hay en
la fila correspondiente al estado actual y la entrada actual. Este proceso continua hasta llegar a un
estado de aceptacin o de error. Si es aceptacin devolver el token con los caracteres
acumulados, si hay retroceso se retroceder el cursor de seleccin de entrada tantas unidades
como se indique. Se borra el buffer y se comienza en el estado 0. Si se llega a un estado de error se
manda el error correspondiente.
Hay dos casos en que hay que decidir entre ms de un token, uno es cuando hay dos lexemas, uno
ms largo que otro y comienzan igual, y otro cuando el mismo lexema puede asociar a ms de un
token, entonces se elegir el primero que se encuentre en la especificacin

Cdigo en Java

Das könnte Ihnen auch gefallen