SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
CIS-IXB
UNIVERSIDAD
NACIONAL
DE LOJA
´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables
Carrera de Ingenier´ıa en Sistemas
“Compilador para la Generaci´on de
C´odigo a partir de las iniciales de los
Nombres de una persona”
Noveno B
Autor:
Mora-Medina,Ana-Cristina
Docente:
Ing. Paz, Henry
Loja-Ecuador
2015
Compilador para la Generaci´on de C´odigo a partir de las iniciales de los Nombres de una
persona by Mora Ana is licensed Under a Creative Commons Reconocimiento-
NoComercial-CompartirIgual 3.0 Unported License.
1
´Indice
A. Caso Pr´actico 3
B. Aut´omata 4
C. Analizador L´exico 4
1 . C´odigo de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 . Opciones y Declaraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 . Reglas L´exicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
D. Analizador Sint´actico 8
1 . Definici´on de paquetes e importaci´on de paquetes necesarios . . . . . . . . 9
2 . Secci´on de C´odigo de usuario . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 . Declaraci´on de s´ımbolos terminales y no terminales . . . . . . . . . . . . . 10
4 . Definici´on S´ımbolos iniciales de la gram´atica . . . . . . . . . . . . . . . . . 11
E. Ejecuci´on del Compilador 14
1 . C´odigo Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 . Ejecuci´on del compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 . Referencia de C´odigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
F. Conclusiones y Recomendaciones 17
1 . Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 . Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
G. BIBLIOGRAF´IA 18
A. Caso Pr´actico
El problema a resolver a trav´es del presente compilador consiste en que al ingresar
una cadena con los nombres completos de una persona, de la que se proceder´a a extraer
la primera letra de cada nombre, con las cuales se generar´a un c´odigo con las iniciales del
nombre ingresado, cabe recalcar que el c´odigo generado se presentar´a en may´usculas sin
importar si los nombres fueron ingresados en may´usculas o min´usculas.
Para lo antes mencionado la cadena a ingresar con los nombres completos de la persona
deber´a cumplir con ciertas condiciones que se describen a continuaci´on:
Al ingresar los dos nombres y apellidos, estos pueden estar en min´usculas, may´uscu-
las o la primera inicial con may´usculas.
Los nombres no deben contener ning´un car´acter especial o n´umeros como parte de
la cadena ingresada.
Al final de los nombres completos de la persona debe ingresarse un punto y coma
(;)
Por ejemplo la cadena con los nombres completos de la persona puede ingresarse de las
siguientes formas:
Rosa Mar´ıa Tene Pineda;
ROSA MAR´IA TENE PINEDA;
rosa mar´ıa tene pineda;
rOSA mar´ıa Tene PInEDA;
obteni´endose el c´odigo siguiente: RMTP para cualquier forma que haya sido ingresada
la cadena.
3
B. Aut´omata
De acuerdo al problema a resolver se ha desarrollado el aut´omata determinista que se
presenta en la Figura 1, este aut´omata est´a compuesto por 3 estados, los cuales se detallan
a continuaci´on:
Un estado inicial, el mismo que permitir´a evaluar si la cadena de entrada es co-
rrecta, dando as´ı paso al siguiente estado, este cadena comprender´a las letras del
alfabeto espa˜nol tanto may´usculas como min´usculas [a-zA-Z] y todas sus posibles
combinaciones, adem´as de espacios.
1 estado intermedio, el cual tomar´a valores las letras del alfabeto espa˜nol tanto
may´usculas como min´usculas [a-zA-Z] y todas sus posibles combinaciones, adem´as
de espacios.
Un estado de aceptaci´on, el cual corresponde al fin de entrada de la cadena repre-
sentado por el punto y coma.
Figura 1: Aut´omata
C. Analizador L´exico
El analizador l´exico es la primera fase de un compilador, el cual se encarga de leer el
flujo de caracteres de entrada y transformarlos en una secuencia de componentes l´exicos
los mismos que ser´an utilizados posteriormente por el analizador sint´actico.
Con esta breve descripci´on de lo que es un analizador l´exico, a continuaci´on se proce-
der´a a explicar las diferentes partes que componen la estructura b´asica del archivo FLEX.
1 . C´odigo de usuario
En esta parte del archivo se coloca el c´odigo Java que se usar´a en la clase que se
ser´a generada por nuestro analizador, por lo general en esta secci´on se colocan todos los
imports a otras librer´ıas. Ver Figura 2.
package ejemplocup: Representa el nombre del paquete en el que se esta realizando
el ejemplo.
import java cup.runtime.∗: Esta l´ınea permite que se realice la ejecuci´on en pa-
ralelo del analizador l´exico y analizador sint´actico.
4
import java.io.Reader: Permite realizar la lectura de un archivo desde java.
Figura 2: C´odigo de Usuario
2 . Opciones y Declaraciones
La secci´on de opciones y declaraciones est´a compuesta por un conjunto de par´ame-
tros que permiten indicar al analizador l´exico como debe comportarse, para ello cada
par´ametro especificado debe empezar con el s´ımbolo % y debe escribe s´olo uno por l´ınea.
A continuaci´on se describe cada uno de los par´ametros que debe contiene la secci´on de
opciones y declaraciones que se presentan en la Figura 3.
% % El s´ımbolo de porcentaje doble que se encuentra al inicio y fin de la Figura
3. indica que las l´ıneas que se encuentran dentro de estos s´ımbolos corresponden al
bloque de configuraci´on del analizador l´exico.
% class AnalizadorLexico: Con esta l´ınea podemos cambiar el nombre de la clase
que genera por defecto el analizador l´exico. En este caso el nombre que tomar´a la
clase ser´a: AnalizadorLexico.
%line y %column: Estas dos l´ıneas le indican al analizador que lleve el conteo de
la l´ınea y columna que esta analizando.
%cup: Con esta l´ınea activamos la compatibilidad del analizador l´exico con Java
CUP para los analizadores sint´acticos(parser).
M´etodos Symbol: Los m´etodos Symbol son los encargados de generar un java cup
.Symbol para guardar el tipo de token encontrado, as´ı la posici´on de la l´ınea y
columna en que est´a dicho token.
Cadena y spacio: Estas corresponden a las declaraciones de las expresiones que
formaran parte de nuestro analizador l´exico. Tenemos Cadena va a estar dada por
cualquier combinaci´on de letras comprendidas entre a-z min´usculas y A-Z may´uscu-
las, mientras spacio nos indica que podr´a ingresar espacios en la cadena a analizar.
5
Figura 3: Opciones y Declaraciones
3 . Reglas L´exicas
En esta secci´on del archivo Flex, se definen las reglas l´exicas que va a tener nuestro
archivo Flex y a trav´es de las cuales se podr´a obtener los tokens de la cadena que se esta
leyendo. A continuaci´on se realiza la explicaci´on de los diferentes m´etodos que se pueden
apreciar en la Figura 4.
YYINITIAL Corresponde al estado l´exico inicial del esc´aner, con el cual se se
empieza a escanear. Si una expresi´on regular no tiene condici´on inicial, ser´a evaluada
en cualquier estado l´exico que se encuentre el esc´aner.
M´etodos yytext(), yyline y yycolum: Estos m´etodos retornan el token encontrado,
junto al valor de la l´ınea y columna en que se encuentra el token dentro de la cadena
ingresada, la cual esta siendo analizada por el analizador l´exico.
Punto (.): Con el punto se eval´ua si el token contenido en la entrada no coincide
con ninguna regla l´exica y lo marca como un token ilegal.
6
Figura 4: Reglas L´exicas
Una vez explicada cada una de las secciones que componen el analizador l´exico, se
presenta finalmente en la Figura 5. la estructura del archivo Flex del problema descrito
en la secci´on anterior.
7
Figura 5: Estructura Final Archivo FLEX
D. Analizador Sint´actico
El analizador sint´actico (parser) es el encargado de recibir los tokens y determinar
si la cadena puede ser generada para la gram´atica que especifiquemos dependiendo del
problema que vamos a resolver. La estructura que debe tener el archivo CUP se detalla a
8
continuaci´on:
1 . Definici´on de paquetes e importaci´on de paquetes necesarios
En esta secci´on del archivo se incluyen todos los paquetes e importaciones del c´odigo
Java que se usar´a para las clases que ser´an generadas a partir del archivo sint´actico. A
continuaci´on se detallan cada uno de los par´ametros presentes en la Figura 6.
package ejemplocup: Representa el nombre del paquete en donde se crear´a la clase
java de este archivo.
import java cup.runtime.∗: Esta l´ınea es importante ya que permitir´a que se
ejecute paralelamente el analizador l´exico y analizador sint´actico.
import java.io.FileReader: La importaci´on de esta clase permite realizar la lec-
tura de un archivo desde java.
Figura 6: Definici´on de Paquetes e Importaciones
2 . Secci´on de C´odigo de usuario
En esta secci´on se realizan declaraciones opcionales de c´odigo java que va a utilizar
la clase que se generar´a a partir del archivo sint´actico. A continuaci´on se da una breve
descripci´on del c´odigo que se detalla en el parser code que se aprecia en la Figura 7.
report error(String message, Object info): Permite controlar los errores de
nuestro compilador.
• La l´ınea StringBuilder m = new StringBuilder(”Error”);, Se crea para enviar
el mensaje de error en la fila y columna en que se encuentre el error.
• La condici´on if (info instanceof java cup.runtime.Symbol), permite verificar si
el token no se encuentra dentro de los establecidos en nuestro analizador l´exico,
lanza el mensaje de error con el n´umero de fila y columna en que se encuentre
el error.
• String valor=info.toString()+””;, asigna a la variable el valor de info.
• String[] val vec=valor.split(”#”);, crea un vector con los datos de la cadena
valor
• La condici´on if(Integer.parseInt(val vec[1])==sym.EOF) eval´ua si el dato al-
macenado en la posici´on 1 del vector es igual al s´ımbolo EOF y presenta el
mensaje cuando falta fin de l´ınea.
9
• La condici´on if(Integer.parseInt(val vec[1])==sym.PALABRA) eval´ua si el da-
to almacenado en la posici´on 1 del vector es igual al s´ımbolo PALABRA y
presenta el mensaje cuando la palabra contiene caracteres especiales o n´ume-
ros.
report fatal error(String message, Object info: Este m´etodo se ejecuta cuan-
do se encuentra un error del cual el sistema no puede recuperarse, lanz´andose error
fatal. Para ello llama al m´etodo report error(String message, Object info), desple-
gando el mensaje de error y se finalizando la ejecuci´on.
main(String[] args) : A partir del m´etodo main se procesar´a el archivo de entrada
txt, el cual contiene la cadena que ser´a evaluada por el compilador.
Figura 7: Secci´on de C´odigo de usuario
3 . Declaraci´on de s´ımbolos terminales y no terminales
En esta secci´on se realiza la declaraci´on de los s´ımbolos terminales y no terminales de
la gram´atica que se define en el analizador sint´actico que se esta generando a partir de
este archivo.
10
S´ımbolos terminales: Representan a los tokens que se declararon en la secci´on
de reglas l´exicas del archivo FLEX, se debe tener en cuenta que aquellos terminales
que no tienen un valor son listados primero y los que tienen valor como el String
son listados en la segunda o dem´as l´ıneas. Ver Figura 8.
Figura 8: S´ımbolos terminales
S´ımbolos no terminales: Estos nodos son utilizados para especificar la parte
gramatical de nuestro compilador, al igual que en los nodos terminales, los nodos
que tienen un valor Object (no tienen un tipo de valor definido, cuyo valor puede
ser String, int, etc) son listados primero y los que tienen valor un String son listados
en la segunda o dem´as l´ıneas. Ver Figura 9.
Figura 9: S´ımbolos no terminales
4 . Definici´on S´ımbolos iniciales de la gram´atica
Esta secci´on permite especificar la gram´atica que tener nuestro analizador sint´actico,
el cual evaluar´a las entradas que se proporcionen a nuestro compilador y determinar´a si
las cadenas son aceptadas o no.
Declaraciones de precedencia: Primeramente se realiza las declaraciones de pre-
cedencia para nuestro compilador. En donde expr list permite que nuestro compi-
lador analice todas las entradas del archivo de texto, mientras que en expr part se
detalla c´odigo java para la presentaci´on de resultados obtenidos. Esto se aprecia en
la Figura 10.
Figura 10: Declaraciones de precedencia
11
Gram´atica: Por ´ultimo en esta parte se especifica la gram´atica que aceptar´a nuestro
compilador, as´ı como el c´odigo java que se ejecutar´a para obtener la salida deseada
de nuestro compilador (ver Figura 11). Es por ello, que el resultado obtenido luego
de validarse la gram´atica y ejecutarse el c´odigo java se debe asignar a RESULT,
el cual pasar´a dicho resultado al nodo no terminal expr part definido en la secci´on
anterior Declaraci´on de precedencia.
Figura 11: Gram´atica
Una vez que se a terminado de explicar cada una de las secciones que componen el
analizador sint´actico, se presenta finalmente en la Figura 12. la estructura del archivo
CUP de nuestro problema.
12
Figura 12: Estructura Final Archivo CUP
13
E. Ejecuci´on del Compilador
Para la presentaci´on de resultados se proceder´a a explicar el c´odigo JAVA necesario
para que nuestro compilador se ejecute de forma correcta y se detallar´a un ejemplo en en
cual se muestre los resultados al ingresar una cadena con la gram´atica correcta de forma
que sea aceptada por el compilador, as´ı como una cadena que contenga una gram´atica
incorrecta con lo cual el compilador presentar´a los errores que se producen y por que
raz´on esta cadena no es aceptada.
1 . C´odigo Java
Importaci´on de Librer´ıas: Para poder compilar nuestro caso de estudio debemos
tener importadas las librer´ıas la librer´ıa jcup a˜nadido al proyecto. Ver Figura 13.
Figura 13: Importaci´on de Librer´ıas
C´odigo para Ejecutar Compilador: En esta secci´on llamamos las librer´ıas jflex
y jcup que permitir´an crear las clases AnalizadorLexico.java, AnalizadorSintacti-
co.java, y sym que contienen la estructura de los archivos Flex y Cup creados para
el compilador, as´ı como los s´ımbolos o tokens. Ver Figura 14.
14
Figura 14: C´odigo para Ejecutar Compilador
2 . Ejecuci´on del compilador
Creamos un archivo de texto que contiene la gram´atica aceptada para nuestro com-
pilador. Ver Figura 15.
Figura 15: Archivo de texto - Gram´atica correcta
Ejecutamos el compilador y obtenemos el resultado que se presenta la la Figura 16.
15
Figura 16: Resultado de Compilador - Gram´atica correcta
Creamos un archivo de texto que contiene una gram´atica no aceptada para nuestro
compilador. Ver Figura 17.
Figura 17: Archivo de texto - Gram´atica incorrecta
Ejecutamos el compilador y obtenemos el resultado que se presenta la la Figura 18,
al ingresar una gram´atica incorrecta en nuestro archivo de texto.
Figura 18: Resultado de Compilador - Gram´atica correcta
3 . Referencia de C´odigo
El c´odigo de los archivos Flex y Cup los puede encontrar en el siguiente enlace: https:
//code.google.com/p/ejemplo-cup/source/browse/
16
F. Conclusiones y Recomendaciones
1 . Conclusiones
La elaboraci´on del aut´omata del problema a resolver, permite conocer como fun-
cionar´a el compilador y de esta forma se definir´a correctamente las expresiones
gramaticales.
En el archivo.flex se debe definir los tokens y los m´etodos para detecci´on de errores,
los cuales permiten al compilador funcionar de forma correcta.
A trav´es del archivo.cup se determina y eval´ua las expresiones gramaticales que
ser´an aceptadas por el compilador
La opci´on %cup que se define en el archivo flex permite activar la compatibilidad
entre el analizador l´exico y sint´actico, permitiendo as´ı trabajar con los tokens que
se especificaron en el aut´omata.
2 . Recomendaciones
Determinar correctamente el alfabeto que va aceptar el aut´omata, para as´ı definir
correctamente las expresiones gramaticales que formar´an parte del compilador a
desarrollar.
Personalizar los mensajes de error en el archivo.cup de forma que indique por que
raz´on se presenta un error en una cadena a validar, as´ı como la fila y columna en
que se encuentra para que el usuario pueda corregirlo f´acilmente.
17
G. BIBLIOGRAF´IA
Referencias
[1] Giaa. “Analizador L´exico”. Disponible en: http://www.giaa.inf.uc3m.es/
docencia/ITIG/lexico.pdf
[2] Ortega, J. “Tutorial Jlex y Java Cup”. Disponible en: https://www.scribd.com/
doc/78814502/Jlex-y-Cup2
[3] Slideshare. “Analizzador L´exico”. Disponible en: http://es.slideshare.net/
maryr_/actividad-2-analizador-lxico-sintctico-y-semntico
[4] Slideshare. “Compiladores e interpretes”. Disponible en: http://www.escet.urjc.
es/˜ci/material/lexico.pdf
[5] Trejo, M.(2004). “RELIPMOC: Construcci´on de un Compilador B´asico haciendo uso
de las herramientas JLex y CUP”. Disponible en: http://www.dynamics.unam.edu/
users/mtrejo/cursos/compiladores/compilers.pdf
[6] Universidad de Huelva. Departamento de Tecnolog´ıas de Informaci´on. “Procesado-
res de Lenguaje”. Disponible en:http://www.uhu.es/francisco.moreno/gii_pl/
docs/Tema_2.pdf
[7] Vega, R.(2008). “Integraci´on de JFlex y Cup. Analizadores L´exico y Sint´actico”.
Disponible en: http://www.rafaelvega.com/wp-content/uploads/Articulo.pdf
18

Más contenido relacionado

Similar a Compilador para la generación de código a partir de las iniciales de los nombres de una persona

Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladoresSheyli Patiño
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresChristian Lara
 
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
Raúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresadaRaúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresada
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresadaRaul
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cupditopo
 
Informe compilador divisor
Informe compilador divisorInforme compilador divisor
Informe compilador divisorSoraya Lara
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupSoraya Lara
 
Compilador - Área de trapecio
Compilador - Área de trapecioCompilador - Área de trapecio
Compilador - Área de trapecioByron Cabrera
 
Compilador concatenacion
Compilador concatenacionCompilador concatenacion
Compilador concatenacionjessy Cueva
 
Manual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfManual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfDavidErnestoT
 
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.Paola Morocho Arévalo
 
Ensayo Compilador Suma y Resta
Ensayo Compilador Suma y RestaEnsayo Compilador Suma y Resta
Ensayo Compilador Suma y Restahepavien
 
Cap3
Cap3Cap3
Cap3CJAO
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2perlallamas
 
Introducción a python.pdf
Introducción a python.pdfIntroducción a python.pdf
Introducción a python.pdfAz
 
Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Raul Hernandez Mayo
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxicokatherine133
 
Presentación 2014 profe gabriel
Presentación 2014 profe gabrielPresentación 2014 profe gabriel
Presentación 2014 profe gabrielEnrique Morales
 

Similar a Compilador para la generación de código a partir de las iniciales de los nombres de una persona (20)

Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladores
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladores
 
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
Raúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresadaRaúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresada
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cup
 
Informe compilador divisor
Informe compilador divisorInforme compilador divisor
Informe compilador divisor
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y Cup
 
Compilador - Área de trapecio
Compilador - Área de trapecioCompilador - Área de trapecio
Compilador - Área de trapecio
 
Compilador concatenacion
Compilador concatenacionCompilador concatenacion
Compilador concatenacion
 
Manual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfManual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdf
 
Articulo
ArticuloArticulo
Articulo
 
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
 
Ensayo Compilador Suma y Resta
Ensayo Compilador Suma y RestaEnsayo Compilador Suma y Resta
Ensayo Compilador Suma y Resta
 
Introducción a la Algoritmia
Introducción a la AlgoritmiaIntroducción a la Algoritmia
Introducción a la Algoritmia
 
Cap3
Cap3Cap3
Cap3
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Introducción a python.pdf
Introducción a python.pdfIntroducción a python.pdf
Introducción a python.pdf
 
Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxico
 
Fun consola guia_01
Fun consola guia_01Fun consola guia_01
Fun consola guia_01
 
Presentación 2014 profe gabriel
Presentación 2014 profe gabrielPresentación 2014 profe gabriel
Presentación 2014 profe gabriel
 

Último

Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 

Último (20)

Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 

Compilador para la generación de código a partir de las iniciales de los nombres de una persona

  • 1. CIS-IXB UNIVERSIDAD NACIONAL DE LOJA ´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables Carrera de Ingenier´ıa en Sistemas “Compilador para la Generaci´on de C´odigo a partir de las iniciales de los Nombres de una persona” Noveno B Autor: Mora-Medina,Ana-Cristina Docente: Ing. Paz, Henry Loja-Ecuador 2015 Compilador para la Generaci´on de C´odigo a partir de las iniciales de los Nombres de una persona by Mora Ana is licensed Under a Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 Unported License. 1
  • 2. ´Indice A. Caso Pr´actico 3 B. Aut´omata 4 C. Analizador L´exico 4 1 . C´odigo de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 . Opciones y Declaraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3 . Reglas L´exicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 D. Analizador Sint´actico 8 1 . Definici´on de paquetes e importaci´on de paquetes necesarios . . . . . . . . 9 2 . Secci´on de C´odigo de usuario . . . . . . . . . . . . . . . . . . . . . . . . . 9 3 . Declaraci´on de s´ımbolos terminales y no terminales . . . . . . . . . . . . . 10 4 . Definici´on S´ımbolos iniciales de la gram´atica . . . . . . . . . . . . . . . . . 11 E. Ejecuci´on del Compilador 14 1 . C´odigo Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2 . Ejecuci´on del compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 . Referencia de C´odigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 F. Conclusiones y Recomendaciones 17 1 . Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 . Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 G. BIBLIOGRAF´IA 18
  • 3. A. Caso Pr´actico El problema a resolver a trav´es del presente compilador consiste en que al ingresar una cadena con los nombres completos de una persona, de la que se proceder´a a extraer la primera letra de cada nombre, con las cuales se generar´a un c´odigo con las iniciales del nombre ingresado, cabe recalcar que el c´odigo generado se presentar´a en may´usculas sin importar si los nombres fueron ingresados en may´usculas o min´usculas. Para lo antes mencionado la cadena a ingresar con los nombres completos de la persona deber´a cumplir con ciertas condiciones que se describen a continuaci´on: Al ingresar los dos nombres y apellidos, estos pueden estar en min´usculas, may´uscu- las o la primera inicial con may´usculas. Los nombres no deben contener ning´un car´acter especial o n´umeros como parte de la cadena ingresada. Al final de los nombres completos de la persona debe ingresarse un punto y coma (;) Por ejemplo la cadena con los nombres completos de la persona puede ingresarse de las siguientes formas: Rosa Mar´ıa Tene Pineda; ROSA MAR´IA TENE PINEDA; rosa mar´ıa tene pineda; rOSA mar´ıa Tene PInEDA; obteni´endose el c´odigo siguiente: RMTP para cualquier forma que haya sido ingresada la cadena. 3
  • 4. B. Aut´omata De acuerdo al problema a resolver se ha desarrollado el aut´omata determinista que se presenta en la Figura 1, este aut´omata est´a compuesto por 3 estados, los cuales se detallan a continuaci´on: Un estado inicial, el mismo que permitir´a evaluar si la cadena de entrada es co- rrecta, dando as´ı paso al siguiente estado, este cadena comprender´a las letras del alfabeto espa˜nol tanto may´usculas como min´usculas [a-zA-Z] y todas sus posibles combinaciones, adem´as de espacios. 1 estado intermedio, el cual tomar´a valores las letras del alfabeto espa˜nol tanto may´usculas como min´usculas [a-zA-Z] y todas sus posibles combinaciones, adem´as de espacios. Un estado de aceptaci´on, el cual corresponde al fin de entrada de la cadena repre- sentado por el punto y coma. Figura 1: Aut´omata C. Analizador L´exico El analizador l´exico es la primera fase de un compilador, el cual se encarga de leer el flujo de caracteres de entrada y transformarlos en una secuencia de componentes l´exicos los mismos que ser´an utilizados posteriormente por el analizador sint´actico. Con esta breve descripci´on de lo que es un analizador l´exico, a continuaci´on se proce- der´a a explicar las diferentes partes que componen la estructura b´asica del archivo FLEX. 1 . C´odigo de usuario En esta parte del archivo se coloca el c´odigo Java que se usar´a en la clase que se ser´a generada por nuestro analizador, por lo general en esta secci´on se colocan todos los imports a otras librer´ıas. Ver Figura 2. package ejemplocup: Representa el nombre del paquete en el que se esta realizando el ejemplo. import java cup.runtime.∗: Esta l´ınea permite que se realice la ejecuci´on en pa- ralelo del analizador l´exico y analizador sint´actico. 4
  • 5. import java.io.Reader: Permite realizar la lectura de un archivo desde java. Figura 2: C´odigo de Usuario 2 . Opciones y Declaraciones La secci´on de opciones y declaraciones est´a compuesta por un conjunto de par´ame- tros que permiten indicar al analizador l´exico como debe comportarse, para ello cada par´ametro especificado debe empezar con el s´ımbolo % y debe escribe s´olo uno por l´ınea. A continuaci´on se describe cada uno de los par´ametros que debe contiene la secci´on de opciones y declaraciones que se presentan en la Figura 3. % % El s´ımbolo de porcentaje doble que se encuentra al inicio y fin de la Figura 3. indica que las l´ıneas que se encuentran dentro de estos s´ımbolos corresponden al bloque de configuraci´on del analizador l´exico. % class AnalizadorLexico: Con esta l´ınea podemos cambiar el nombre de la clase que genera por defecto el analizador l´exico. En este caso el nombre que tomar´a la clase ser´a: AnalizadorLexico. %line y %column: Estas dos l´ıneas le indican al analizador que lleve el conteo de la l´ınea y columna que esta analizando. %cup: Con esta l´ınea activamos la compatibilidad del analizador l´exico con Java CUP para los analizadores sint´acticos(parser). M´etodos Symbol: Los m´etodos Symbol son los encargados de generar un java cup .Symbol para guardar el tipo de token encontrado, as´ı la posici´on de la l´ınea y columna en que est´a dicho token. Cadena y spacio: Estas corresponden a las declaraciones de las expresiones que formaran parte de nuestro analizador l´exico. Tenemos Cadena va a estar dada por cualquier combinaci´on de letras comprendidas entre a-z min´usculas y A-Z may´uscu- las, mientras spacio nos indica que podr´a ingresar espacios en la cadena a analizar. 5
  • 6. Figura 3: Opciones y Declaraciones 3 . Reglas L´exicas En esta secci´on del archivo Flex, se definen las reglas l´exicas que va a tener nuestro archivo Flex y a trav´es de las cuales se podr´a obtener los tokens de la cadena que se esta leyendo. A continuaci´on se realiza la explicaci´on de los diferentes m´etodos que se pueden apreciar en la Figura 4. YYINITIAL Corresponde al estado l´exico inicial del esc´aner, con el cual se se empieza a escanear. Si una expresi´on regular no tiene condici´on inicial, ser´a evaluada en cualquier estado l´exico que se encuentre el esc´aner. M´etodos yytext(), yyline y yycolum: Estos m´etodos retornan el token encontrado, junto al valor de la l´ınea y columna en que se encuentra el token dentro de la cadena ingresada, la cual esta siendo analizada por el analizador l´exico. Punto (.): Con el punto se eval´ua si el token contenido en la entrada no coincide con ninguna regla l´exica y lo marca como un token ilegal. 6
  • 7. Figura 4: Reglas L´exicas Una vez explicada cada una de las secciones que componen el analizador l´exico, se presenta finalmente en la Figura 5. la estructura del archivo Flex del problema descrito en la secci´on anterior. 7
  • 8. Figura 5: Estructura Final Archivo FLEX D. Analizador Sint´actico El analizador sint´actico (parser) es el encargado de recibir los tokens y determinar si la cadena puede ser generada para la gram´atica que especifiquemos dependiendo del problema que vamos a resolver. La estructura que debe tener el archivo CUP se detalla a 8
  • 9. continuaci´on: 1 . Definici´on de paquetes e importaci´on de paquetes necesarios En esta secci´on del archivo se incluyen todos los paquetes e importaciones del c´odigo Java que se usar´a para las clases que ser´an generadas a partir del archivo sint´actico. A continuaci´on se detallan cada uno de los par´ametros presentes en la Figura 6. package ejemplocup: Representa el nombre del paquete en donde se crear´a la clase java de este archivo. import java cup.runtime.∗: Esta l´ınea es importante ya que permitir´a que se ejecute paralelamente el analizador l´exico y analizador sint´actico. import java.io.FileReader: La importaci´on de esta clase permite realizar la lec- tura de un archivo desde java. Figura 6: Definici´on de Paquetes e Importaciones 2 . Secci´on de C´odigo de usuario En esta secci´on se realizan declaraciones opcionales de c´odigo java que va a utilizar la clase que se generar´a a partir del archivo sint´actico. A continuaci´on se da una breve descripci´on del c´odigo que se detalla en el parser code que se aprecia en la Figura 7. report error(String message, Object info): Permite controlar los errores de nuestro compilador. • La l´ınea StringBuilder m = new StringBuilder(”Error”);, Se crea para enviar el mensaje de error en la fila y columna en que se encuentre el error. • La condici´on if (info instanceof java cup.runtime.Symbol), permite verificar si el token no se encuentra dentro de los establecidos en nuestro analizador l´exico, lanza el mensaje de error con el n´umero de fila y columna en que se encuentre el error. • String valor=info.toString()+””;, asigna a la variable el valor de info. • String[] val vec=valor.split(”#”);, crea un vector con los datos de la cadena valor • La condici´on if(Integer.parseInt(val vec[1])==sym.EOF) eval´ua si el dato al- macenado en la posici´on 1 del vector es igual al s´ımbolo EOF y presenta el mensaje cuando falta fin de l´ınea. 9
  • 10. • La condici´on if(Integer.parseInt(val vec[1])==sym.PALABRA) eval´ua si el da- to almacenado en la posici´on 1 del vector es igual al s´ımbolo PALABRA y presenta el mensaje cuando la palabra contiene caracteres especiales o n´ume- ros. report fatal error(String message, Object info: Este m´etodo se ejecuta cuan- do se encuentra un error del cual el sistema no puede recuperarse, lanz´andose error fatal. Para ello llama al m´etodo report error(String message, Object info), desple- gando el mensaje de error y se finalizando la ejecuci´on. main(String[] args) : A partir del m´etodo main se procesar´a el archivo de entrada txt, el cual contiene la cadena que ser´a evaluada por el compilador. Figura 7: Secci´on de C´odigo de usuario 3 . Declaraci´on de s´ımbolos terminales y no terminales En esta secci´on se realiza la declaraci´on de los s´ımbolos terminales y no terminales de la gram´atica que se define en el analizador sint´actico que se esta generando a partir de este archivo. 10
  • 11. S´ımbolos terminales: Representan a los tokens que se declararon en la secci´on de reglas l´exicas del archivo FLEX, se debe tener en cuenta que aquellos terminales que no tienen un valor son listados primero y los que tienen valor como el String son listados en la segunda o dem´as l´ıneas. Ver Figura 8. Figura 8: S´ımbolos terminales S´ımbolos no terminales: Estos nodos son utilizados para especificar la parte gramatical de nuestro compilador, al igual que en los nodos terminales, los nodos que tienen un valor Object (no tienen un tipo de valor definido, cuyo valor puede ser String, int, etc) son listados primero y los que tienen valor un String son listados en la segunda o dem´as l´ıneas. Ver Figura 9. Figura 9: S´ımbolos no terminales 4 . Definici´on S´ımbolos iniciales de la gram´atica Esta secci´on permite especificar la gram´atica que tener nuestro analizador sint´actico, el cual evaluar´a las entradas que se proporcionen a nuestro compilador y determinar´a si las cadenas son aceptadas o no. Declaraciones de precedencia: Primeramente se realiza las declaraciones de pre- cedencia para nuestro compilador. En donde expr list permite que nuestro compi- lador analice todas las entradas del archivo de texto, mientras que en expr part se detalla c´odigo java para la presentaci´on de resultados obtenidos. Esto se aprecia en la Figura 10. Figura 10: Declaraciones de precedencia 11
  • 12. Gram´atica: Por ´ultimo en esta parte se especifica la gram´atica que aceptar´a nuestro compilador, as´ı como el c´odigo java que se ejecutar´a para obtener la salida deseada de nuestro compilador (ver Figura 11). Es por ello, que el resultado obtenido luego de validarse la gram´atica y ejecutarse el c´odigo java se debe asignar a RESULT, el cual pasar´a dicho resultado al nodo no terminal expr part definido en la secci´on anterior Declaraci´on de precedencia. Figura 11: Gram´atica Una vez que se a terminado de explicar cada una de las secciones que componen el analizador sint´actico, se presenta finalmente en la Figura 12. la estructura del archivo CUP de nuestro problema. 12
  • 13. Figura 12: Estructura Final Archivo CUP 13
  • 14. E. Ejecuci´on del Compilador Para la presentaci´on de resultados se proceder´a a explicar el c´odigo JAVA necesario para que nuestro compilador se ejecute de forma correcta y se detallar´a un ejemplo en en cual se muestre los resultados al ingresar una cadena con la gram´atica correcta de forma que sea aceptada por el compilador, as´ı como una cadena que contenga una gram´atica incorrecta con lo cual el compilador presentar´a los errores que se producen y por que raz´on esta cadena no es aceptada. 1 . C´odigo Java Importaci´on de Librer´ıas: Para poder compilar nuestro caso de estudio debemos tener importadas las librer´ıas la librer´ıa jcup a˜nadido al proyecto. Ver Figura 13. Figura 13: Importaci´on de Librer´ıas C´odigo para Ejecutar Compilador: En esta secci´on llamamos las librer´ıas jflex y jcup que permitir´an crear las clases AnalizadorLexico.java, AnalizadorSintacti- co.java, y sym que contienen la estructura de los archivos Flex y Cup creados para el compilador, as´ı como los s´ımbolos o tokens. Ver Figura 14. 14
  • 15. Figura 14: C´odigo para Ejecutar Compilador 2 . Ejecuci´on del compilador Creamos un archivo de texto que contiene la gram´atica aceptada para nuestro com- pilador. Ver Figura 15. Figura 15: Archivo de texto - Gram´atica correcta Ejecutamos el compilador y obtenemos el resultado que se presenta la la Figura 16. 15
  • 16. Figura 16: Resultado de Compilador - Gram´atica correcta Creamos un archivo de texto que contiene una gram´atica no aceptada para nuestro compilador. Ver Figura 17. Figura 17: Archivo de texto - Gram´atica incorrecta Ejecutamos el compilador y obtenemos el resultado que se presenta la la Figura 18, al ingresar una gram´atica incorrecta en nuestro archivo de texto. Figura 18: Resultado de Compilador - Gram´atica correcta 3 . Referencia de C´odigo El c´odigo de los archivos Flex y Cup los puede encontrar en el siguiente enlace: https: //code.google.com/p/ejemplo-cup/source/browse/ 16
  • 17. F. Conclusiones y Recomendaciones 1 . Conclusiones La elaboraci´on del aut´omata del problema a resolver, permite conocer como fun- cionar´a el compilador y de esta forma se definir´a correctamente las expresiones gramaticales. En el archivo.flex se debe definir los tokens y los m´etodos para detecci´on de errores, los cuales permiten al compilador funcionar de forma correcta. A trav´es del archivo.cup se determina y eval´ua las expresiones gramaticales que ser´an aceptadas por el compilador La opci´on %cup que se define en el archivo flex permite activar la compatibilidad entre el analizador l´exico y sint´actico, permitiendo as´ı trabajar con los tokens que se especificaron en el aut´omata. 2 . Recomendaciones Determinar correctamente el alfabeto que va aceptar el aut´omata, para as´ı definir correctamente las expresiones gramaticales que formar´an parte del compilador a desarrollar. Personalizar los mensajes de error en el archivo.cup de forma que indique por que raz´on se presenta un error en una cadena a validar, as´ı como la fila y columna en que se encuentra para que el usuario pueda corregirlo f´acilmente. 17
  • 18. G. BIBLIOGRAF´IA Referencias [1] Giaa. “Analizador L´exico”. Disponible en: http://www.giaa.inf.uc3m.es/ docencia/ITIG/lexico.pdf [2] Ortega, J. “Tutorial Jlex y Java Cup”. Disponible en: https://www.scribd.com/ doc/78814502/Jlex-y-Cup2 [3] Slideshare. “Analizzador L´exico”. Disponible en: http://es.slideshare.net/ maryr_/actividad-2-analizador-lxico-sintctico-y-semntico [4] Slideshare. “Compiladores e interpretes”. Disponible en: http://www.escet.urjc. es/˜ci/material/lexico.pdf [5] Trejo, M.(2004). “RELIPMOC: Construcci´on de un Compilador B´asico haciendo uso de las herramientas JLex y CUP”. Disponible en: http://www.dynamics.unam.edu/ users/mtrejo/cursos/compiladores/compilers.pdf [6] Universidad de Huelva. Departamento de Tecnolog´ıas de Informaci´on. “Procesado- res de Lenguaje”. Disponible en:http://www.uhu.es/francisco.moreno/gii_pl/ docs/Tema_2.pdf [7] Vega, R.(2008). “Integraci´on de JFlex y Cup. Analizadores L´exico y Sint´actico”. Disponible en: http://www.rafaelvega.com/wp-content/uploads/Articulo.pdf 18