Está en la página 1de 7

"Ao de la Diversificacin Productiva y del

Fortalecimiento de la Educacin"
UNIVERSIDAD NACIONAL DE PIURA
FACULTAD DE INGENIERIA
INDUSTRIAL
ESCUELA DE INGENIERIA INFORMATICA
Presentacin 1: CREACION DE UN ANALIZADOR LEXICO EN JAVA

DOCENTE:
ING. LUIS ALBERTO CALDERON PINEDO
FECHA DE ENTREGA:
28/05/2015
ALUMNOS:
CALLE GARCIA, Jairo Daro
MARCELO MAZA, Marcos Pal
VEGA CAMPOS, Jorge Junior

TRABAJO REALIZADO EN EL AREA DE TEORIA DE


COMPILADORES

PIURA - 2015

CREACION DE UN ANALIZADOR LEXICO EN JAVA

El proyecto que realizaremos es la creacin de un analizador lxico hecho en


java, que funcionaran para poder analizar un texto ingresado a travs de una rea
de Texto y muestre sus identificadores que si es una letra del abecedario entonces
nos mostrara un id ms lo ingresado y si es que hay un espacio entre palabra la
dividir en varios es decir un id para cada palabra, en el caso de que sea un
numero nos mostrada el nmero. En caso de que sea un carcter no especificado
nos mostrara un error, y si ingresamos // este analizador los ignorada como si
no haya escrito ninguna palabra.

Analizador lxico
Definicin:
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
La entrada del analizador lxico podemos definirla como una secuencia de
caracteres, que pueda hallarse codificada segn cualquier estndar: ASCII
(American Standard Code for Information Interchange), EBCDIC
(Extended Binary Coded Decimal Interchange Code), Unicode, etc.

Funciones:
Leer los caracteres de entrada y elaborar como salida una secuencia de
componentes lxicos que utilizar el analizador sintctico para hacer el
anlisis.
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, etc., y tratarlos correctamente con respecto a la tabla de
smbolos.
Llevar la cuenta del nmero de lnea por la que va leyendo, por si se
produce algn error, dar informacin acerca de dnde se ha producido.
Avisar de errores lxicos. Por ejemplo, si el carcter @ no pertenece al
lenguaje, se debe emitir un error.
Tambin puede hacer funciones de preprocesador.

Aproximaciones para construir un analizador lexicogrfico:


Existen

tres

mecanismos

bsicos

para

construir

un

analizador

lexicogrfico:
Ad hoc. Consiste en la codificacin de un programa reconocedor que no
sigue los formalismos propios de la teora de autmatas. Este tipo de
construcciones es muy propensa a errores y difcil de mantener.
Mediante la implementacin manual de los autmatas finitos. Este
mecanismo consiste en construir los patrones necesarios para cada
categora

lxica,

construir sus

automtas

finitos

individuales,

fusionarlos por opcionalidad y, finalmente, implementar los autmatas


resultantes. Aunque la construccin de analizadores mediante este
mtodo es sistemtica y no propensa a errores, cualquier actualizacin
de los patrones reconocedores implica la modificacin del cdigo que
los implementa, por lo que el mantenimiento se hace muy costoso.
Mediante un metacompilador. En este caso, se utiliza un programa
especial que tiene como entrada pares de la forma (expresin regular,
accin). El metacompilador genera todos los autmatas finitos, los
convierte a autmata finito determinista, y lo implementa en C. El
programa C as generado se compila y se genera un ejecutable que es el

anlizador lxico de nuestro lenguaje. Por supuesto, existen


metacompiladores que generan cdigo Java, Pascal, etc. en lugar de C.
JFlex:
Es un generador de analizadores lexicogrficos
Esta desarrollado en Java y genera analizadores en cdigo Java
Es una reescritura de la herramienta JLex, la cual es una reescritura de la
herramienta lex/flex para Unix
Est pensado para ser usado en conjunto con el generador de parsers
LALR CUP
Funcionamiento:
Entrada
Archivo con la especificacin del scanner
Salida
El analizador lxico (scanner)
Escrito en cdigo Java

Descripcin del funcionamiento del analizador

Figura 1

El programa nos mostrara una ventana como es la que vemos en la figura 1 en el


cual tendremos tres cajas de texto, una etiqueta, un rea de texto y dos botones.
La primera caja de texto nos va a pedir que ingresemos el primer nmero, la
segunda caja de texto nos pedir que ingresemos el segundo nmero, y la tercera
caja es la del signo en la cual se deber ingresar los operadores ++,--, //, ** para
que se realice la operacin indicando el operando mencionado anteriormente, de
no ingresar esos operadores no se realizara la operacin.
En el rea de texto ya habiendo ingresado los dos nmeros y tambin el operador;
se mostrara el anlisis que realizara nuestro analizador lxico y adems si es
correcto lo ingresado aparecer el resultado en la etiqueta resultado de lo
contrario en la caja de texto nos aparecer que el token es error y no nos realizara
la operacin.

Ejemplo de una operacin realizada correctamente:

Figura 2

Como vemos en la Figura 2 se ha ingresado el nmero 3 y el numero 4 dando el


operador ++, al dar click en el botn Calcular en el rea de texto vemos el
anlisis echo por ejemplo al nmero tres lo reconoce como entero al nmero
cuatro igual al operador el token lo reconoce como suma, en la etiqueta resultado
nos calculara el resultado en este caso es 7.
Ejemplo para cuando nos bota error:

En la Figura 3 se muestra que se ha ingresado el nmero 2, y Figura


el nmero
3 3 y de signo se
ha ingresado el *, como se sabe este se utiliza para multiplicar pero como en nuestro
analizador ya lo hemos hecho a nuestras propias definiciones de sintaxis; en el rea de
texto nos aparecer que el token, reconoce a este signo como error, adems no se
realizara la operacin por tanto no habr resultado.

Acotamiento
El acotamiento para nuestra calculadora bsica ser que al ingresar los
operadores que no son reconocidos por los tokens no se muestre el resultado

adems los reconozca como errores

DIAGRAMA DE BLOQUE

Texto

ANALIZADOR LEXICO

Texto Analizado

Error

También podría gustarte