Está en la página 1de 9

UNIVERSIDAD NACIONAL DE SAN

ANTONIO
ABAD DEL CUSCO

FACULTAD DE CIENCIAS QUMICAS,


FSICAS Y MATEMTICAS

CARRERA PROFESIONAL DE INGENIERA


INFORMTICA Y DE SISTEMAS

ANALIZADOR LEXICO
Asignatura: Construccin de
Compiladores

Alumnos: Cdigo:
- Lavilla Alvarez, Vanesa 113558

Semestre 2014-II
Cusco2014
INTRODUCCIN

Un analizador lxico y/o analizador lexicogrfico 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 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.
I. GENERALIDADES

A. OBJETIVOS
1. GENERAL

a) Realizacin de un analizador lxico a partir de la herramienta JFLEX.

2. ESPECIFICOS

a) Reconocer las subcadenas que corresponden a tokens.


b) Regresar el valor o lexema de un token.
c) Realizar para cdigo html
II. MARCO TEORICO

A. HTML

El HTML (Hyper Text Markup Language) es el lenguaje con el que se escriben


las pginas web. Es un lenguaje de hipertexto, es decir, un lenguaje que permite
escribir texto de forma estructurada, y que est compuesto por etiquetas, que marcan
el inicio y el fin de cada elemento del documento.

Un documento hipertexto no slo se compone de texto, puede contener imgenes,


sonido, vdeos, etc., por lo que el resultado puede considerarse como un documento
multimedia.

Los documentos HTML deben tener la extensin html o htm, para que puedan ser
visualizados en los navegadores (programas que permiten visualizar las pginas
web).

Los navegadores se encargan de interpretar el cdigo HTML de los documentos, y


de mostrar a los usuarios las pginas web resultantes del cdigo interpretado.

B. ANALIZADOR LEXICO

1. CONCEPTO

En la fase de anlisis lxico se leen los caracteres del programa fuente y se


agrupan en cadenas que representan los componentes lxicos. Cada componente
lxico es una secuencia lgicamente coherente de caracteres relativamente a un
identificado, una palabra reservada, un operador o un carcter de puntuacin. A
la secuencia de caracteres que representa un componente lxico se llama lexema
(token). En el caso de los identificadores creados por el programador no solo se
genera un componente lxico, sino que genera otro lexema en la tabal de
smbolos.

2. JFLEX

Generador de programas java diseado para procesamiento lxico.


Parte de un conjunto de reglas lxicas.
JFlex produce un programa llamado Yylex que reconoce las cadenas que
cumplen dichas reglas.
3. ESTRUCTURA JFLEX

Un archivo de entrada Jlex, es un archivo plano con la siguiente estructura:

Reglas para las Expresiones Regulares:

a) Cdigo del Usuario

Es la parte del archivo de entrada donde se coloca el codigo java que deseamos
usar en la clase que ser generada, esto quiere decir que Jlex copiar
directamente el codigo a la clase generada, aqui deben ir los importes a otras
librerias.

b) Directivas JLex

En esta seccon irn las directivas, o especificaciones para que opere JLEX, para
obtener la salida deseada.

c) Reglas para las Expresiones Regulares

En esta seccion del archivo Jlex, es donde se definen las reglas para obtener los
tokens de la cadena que se esta leyendo.

Con un ejemplo explicare mejor cada una de estas secciones.

Para el ejemplo escrib un programa que reconoce las siguientes palabras


reservadas: int, string, if, then, else, for, while

Reconoce identificadores, y enteros.

El codigo para hacer Jlex para genera el analizador lexico del ejemplo es el
siguiente:

/*Pequea funcion para imprimir en pantalla*/

public void imprime(String foo){


System.out.println(foo)
}
%}
/*DIRECTIVAS JLEX*/
%class Yylex
%public
%full
%char
%line
%cup
%eofval{
System.out.println("FINARCHIVO");
%eofval}
entero=[0-9]
Id=[a-zA-Z][a-zA-Z0-9]*
%%
/* MANEJO DE LAS PALABRAS RESERVADAS*/
"while" {imprime("while");
}
"int" {imprime("int");}
"if" {imprime("if");}
"then" {imprime("then");}
"for"{imprime("for");}
/*expresion regular para un entero, tomando el conjunto definiddo
anteriormente como entero*/
/*un entero 1 o mas veces*/
({entero})+ {imprime("entero"+}
{Id} {imprime("Identificador");}
/*con la siguiente linesa ignoramos los espacios en blanco*/
(" ") {System.out.println("espacio/*con esta ignoramos los saltos de linea,
tabulaciones,*/
[\t\r\n\f] {}
/*error lexico:*/
. {System.out.println("error
}/*error lexico:*/. {System.out.println("error

El cdigo escrito dentro de los corchetes es el el cdigo que queremos que se


ejecute cada vez que el scanner encuentra los tokens a su izquierda. Este cdigo
queda sin modificar a la hora de generar el archivo de salida java.

III. DESARROLLO DEL TRABAJO


Se sigui los siguientes pasos:

A. RECONOCER LAS SUBCADENAS QUE CORRESPONDEN A TOKENS

Esta etapa comprende la creacin de un fichero con la extensin flex, que contiene las
expresiones regulares codificadas (reglas lxicas), para la obtencin de las subcadenas
correspondientes a cada token especificado, del script en el lenguaje de programacin
HTML que se ingresa para su respectivo anlisis lexico.

Asi mismo en este fichero contiene directivas JFLEX, y algunas sentencias java
necesarias para la generacin de un archivo con la extensin java.
B. REGRESAR EL PAR TOKEN-LEXEMA

El analizador lxico divide la entrada en componentes lxicos.


Los componentes se agrupan en categoras lxicas.
Asociamos atributos a las categoras lxicas.
Especificamos las categoras mediante expresiones regulares.
Para reconocer los lenguajes asociados a las expresiones regulares empleamos
autmatas de estados _nitos.
Se pueden construir los AFD directamente a partir de la expresin regular.
El analizador lxico utiliza la mquina discriminadora determinista.
El tratamiento de errores en el nivel lxico es muy simple.
Podemos implementar la MDD de dos formas: con tablas, mediante control de
flujo.
Hay generadores automticos de analizadores lxicos, por ejemplo Jflex.
Se pueden emplear las ideas de los analizadores lxicos para facilitar el tratamiento
de _cheros de texto.

IV. CONCLUSIONES

El JFLEX es una potente herramienta para la generacin de analizadores lxicos a partir


de expresiones regulares, debido a que es una herramienta multiplataforma.

La aplicacin de los temas estudiados; como autmatas, expresiones regulares; en


cursos previos han sido de vital importancia para el cumplimiento de este proyecto.

Se ha podido comprobar que la etapa de anlisis lxico, constituye una parte importante
del proceso de compilacin ya que su salida es la entrada para las dems etapas de dicho
proceso.

V. BIBLIOGRAFIA
http://es.scribd.com/doc/4750526/19/%C2%BFQUE-ES-UN-ANALIZADOR-
LEXICO
http://www.giaa.inf.uc3m.es/docencia/ITIG/lexico.pdf
http://openfecks.wordpress.com/jlex-y-cup/
http://www.aulaclic.es/html/t_1_1.htm

También podría gustarte