SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
CIS-IX-B
UNIVERSIDAD
NACIONAL
DE LOJA
´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables
Carrera de Ingenier´ıa en Sistemas
“Conversor de Enteros a Binarios”
Informe Final
N´oveno B
Responsable:
• Morocho Morocho Priscila Beatriz
Docente:
• Ing.: Henry Paz
Loja - Ecuador
2015
1
´Indice general
A. Compiladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
B. Descripci´on del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
C. Aut´omata del Compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
D. Compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1 . Analizador Lexico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 . Analizador Sint´actico . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 . Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
E. Bibliograf´ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2
Conversor de Enteros a Binarios
A. Compiladores
Los compiladores como los int´erpretes son programas de gran complejidad. Un compila-
dor no es m´as que un traductor, es decir un programa que nos permite pasar informaci´on de
un lenguaje a otro. Por ejemplo, un compilador de C nos permite traducir ficheros escritos
en lenguaje C a un lenguaje legible para la m´aquina.
Al final tendremos un ´unico programa que ser´ıa el traductor. Este traductor tendr´ıa un
analizador sint´actico, y a su vez el analizador sint´actico tendr´ıa un analizador l´exico. [1]
An´alisis l´exico:Se encarga de la divisi´on de la entrada en componentes l´exicos.
An´alisis sint´actico:Se encarga de encontrar las estructuras presentes en la entrada.
An´alisis sem´antico:Se encarga de comprobar que se cumplen las restricciones sem´anti-
cas del lenguaje.
B. Descripci´on del Problema
El siguiente compilador lo que va a resolver es la conversi´on de n´umeros enteros a bina-
rios, para que se realice la operaci´on se deber´a ingresar el n´umero a convertir seguido de la
palabra reservada convertir, por ejemplo: 256 convertir.
Esto lo vamos a realizar en un archivo txt que posteriormente lo leeremos con nuestro compi-
lador, en el caso de que se ingrese de forma incorrecta saldran los debidos errores del archivo.
Para realizar la codificaci´on del compilador se necesita de las librerias JFLEX y CUP, al
mismo se lo realiza con el lenguaje java por medio del IDE Netbeans.
C. Aut´omata del Compilador
´Este compilador tendr´a la estructura que se muestra a continuaci´on:
Figura 1: Aut´omata del conversor
3
D. Compilador
1 . Analizador Lexico
JFlex es un generador de analizador l´exico para Java, est´a dise˜nado para trabajar junto
con el generador de analizador LALR CUP. Tambi´en se puede utilizar junto con otros gene-
radores de analizadores sint´acticos como antlr o como una herramienta independiente.[2]
Este generador toma una cadena de caracteres como entrada y lo convierte en una secuencia
de tokens, consta de 3 partes principales en su estructura que son: opciones y declaraciones,
c´odigo de usuario y reglas l´exicas.
Opciones y declaraciones: En esta secci´on van los paquetes que se van a utilizar,
aqu´ı se declaran las directivas y macros, se indica el nombre de la clase, en este caso
Analizadorlexico, se habilita line y column para obtener la l´ınea y columna de la
posici´on actual del compilador y cup para realizar la integraci´on con el archivo cup, en
esta secci´on van las siguientes l´ıneas de codigo:
• package ejemplocup: Esto nos indica el paquete en el cual nuestra clase se
encuentra.
• import javacup.runtime: Esta importaci´on permitir´a hacer la implementaci´on
con cup.
• import java.io.Reader: Io Reader nos permitira leer nuestro archivo en el que
estara el n´umero a convertir.
• %class AnalizadorLexico: Nombre de nuestra clase java.
• %line: Indica la posici´on de la l´ınea.
• %column: Indica la posici´on de la columna.
• %cup: Nos permitir´a realizar la compatibilidad con Cup.
Figura 2: Opciones y Declaraciones
4
C´odigo de usuario: En esta secci´on van las directivas, o especificaciones para obtener
la salida deseada. Tambi´en se encuentra aqui los metodos para encontrar los tokens
deseados.
Estos 2 m´etodos van a permitir trabajar con la clase symbol la cual ser´a de ayuda
para que al momento de analizar la expresi´on nos devuelva los tokens encontrados en
la misma.
Figura 3: M´etodos
En esta secci´on especificamos nuestro c´odigo creando tres variables, la variable salto que
indica que se ignorar´a los saltos de l´ınea, retorno de carro o salto de linea y retorno de
carro, la variable espacio que indica que se ignora lo declarado en la variable anterior,
o tabulador y fin de linea y por ´ultimo una variable entero donde vamos a aceptar
enteros del 0 al 9 y todas sus combinaciones.
Figura 4: C´odigo de Usuario
Reglas l´exicas: En esta secci´on del archivo JFlex, es donde se definen las reglas para
obtener los tokens de la cadena que se esta leyendo.
D´onde:
• convertir return symbol(sym.FINAL,yyline,yycolumn); Es el operador
que me permitir´a hacer la transformaci´on de un entero decimal a binario, a este
Token se lo llamara FINAL.
• {Entero} return symbol(sym.ENTERO, new Integer(yytext()),yyline,yycolumn);
Me indica que se va a ingresar un entero al cual lo vamos a transformor, el nombre
para este token es el de ENTERO.
En la imagen siguiente se puede ver, lo que se ha explicado:
5
Figura 5: Reglas l´exicas
Aqu´ı tambi´en encontramos el siguiente c´odigo que nos lanzar´a informaci´on acerca
de la posici´on de algun error encontrado en caso de haberlo.
Figura 6: Reglas l´exicas - captura errores
2 . Analizador Sint´actico
Luego de realizar el analizador l´exico se realiza el analizador sint´actico, para el cual vamos
a emplear la libreria CUP, Cup est´a escrito en Java, utiliza especificaciones incluyendo c´odigo
Java embebido, y produce programas de an´alisis que se implementan en Java. Nuestro archivo
cup esta conformado por [3]:
Definici´on de paquete y sentencias import.
• package ejemplocup: Esto nos indica el paquete en el cual nuestra clase se
encuentra.
• import javacup.runtime.*: Esta importaci´on permitir´a hacer la implementa-
ci´on con cup.
• import java.io.Reader: Io Reader nos permitira leer nuestro archivo en el que
estara el n´umero a convertir.
Figura 7: Paquetes e importaciones
6
Secci´on del parser code, aqu´ı estar´an los metodos que nos permitir´an capturar los
errores encontrados, los mismos que los describiremos a continuaci´on:
• report error: Este m´etodo recibe un mensaje de tipo string y info de tipo object.
Aqu´ı se crea un objeto m de tipo StringBuilder a la cual se la inciar´a con el valor
de Error, luego creo un objeto de tipo Symbol que se lo denomin´o s, el cual me
servir´a para econtrar la fila y la columna d´onde se muestre el error.
El m´etodo:
String var=info.toString()+;
String[] varres=var.split(””);
if (Integer.parseInt(varres[1])==sym.EOF) {
System.err.println(”Falta Ingresar el operador convertir ”); }
else{
if (Integer.parseInt(varres[1])==sym.FINAL) {
System.err.println(.Er
ror con la palabra reservada
convertir ´o Error falta ingresar entero a convertir”);
}
}
m.append(”: -message);
// System.err.println(m); }
Me permitir´a primero crear una variable de tipo String a que le denominamos
var, luego en el paso posteior se crea un arreglo de cadenas en d´onde se va a ir
guardando las variables ingresadas.
Luego pregunta si la posici´on 1 del arreglo es igual al token de Fin de archivvo,
si ese fuera el caso me arroja el mensaje:
Falta ingresar el operador convertir
De darse el caso contrario ah´ı quiere decir que el arreglo de cadenas de posicion 1,
sea igual al token FINAL que hace referencia al operador Convertir del proyecto,
se emite el mensaje: Error ingresar convertir.
• report fatal error Este m´etodo funcionar´a en caso que se encuentre un error
en el cual el sistema no pueda recuperarse, lanzando un mensaje de informaci´on.
7
Figura 8: M´etodos de Errores Encontrados
En esta secci´on tambi´en encontramos el m´etodo main que permitir´a garantizar la
ejecuci´on del analizador lexico y sint´actico.
Figura 9: M´etodo Main
Declaraci´on de s´ımbolos terminales y no terminales.
Se declaran dos teminales el uno un entero y el otro final, y dos no terminales el uno
de tipo object imprime y el otro de tipo string codigo.
Figura 10: Terminales y No terminales
Secci´on de la gram´atica
8
Las gram´aticas sirven para armar las expresiones aceptadas en el compilador. Todos los
terminos no t´erminales deben tener su gram´atica declarada para determinar su valor.
El c´odigo Java que se requiera usar debe ser colocado entre {: c´odigo :}
La gram´atica propuesta para este proyecto debe seguir la siguiente estructura:
• ENTERO FINAL
Ejemplo:
• 12324 convertir
En la imagen que ver´an a continuaci´on indico la gram´atica en d´onde se vera la forma
que tendra la sentencia para realizar la conversion de decimal a binario, declarando
para ellos los t´erminos terminales de acuerdo a la forma que el analizador sint´actico
aceptar´a.
Figura 11: M´etodo para convertir
3 . Resultados
Para poder realizar las conversiones con nuestro compilador vamos a tener un archivo
.txt en el cual est´e el n´umero a convertir con el siguiente formato:
(n´umero) Operador
Por lo tanto si el n´umero al que queremos transformar a binario es el 400, lo vamos a
guardar en el .txt para que el compilador pueda leer y convertir al n´umero deseado.
Ejemplos:
Entrada: 400 convertir
Salida: RESULTADO BINARIO: 110010000
Si se ingresa de forma incorrecta nos puede presentar las siguientes salidas
Entrada: convertir
9
Salida: Error con la palabra reservada convertir ´o Error falta ingresar entero a con-
vertir
Entrada: 34 vertir
Salida:
• El caracter ingresado no es valido (v)posicion(0 5)
• El caracter ingresado no es valido (e)posicion(0 6)
• El caracter ingresado no es valido (r)posicion(0 7)
• El caracter ingresado no es valido (t)posicion(0 8)
• El caracter ingresado no es valido (i)posicion(0 9)
• El caracter ingresado no es valido (r)posicion(0 10)
• Falta Ingresar el operador convertir
Entrada: 27 convertirdd
Salida:
• RESULTADO BINARIO: 11011
• El caracter ingresado no es valido (d)posicion(0 12)
• El caracter ingresado no es valido (d)posicion(0 13)
La siguiente figura muestra el archivo .txt en el cual se ingresa el n´umero a convertir:
Figura 12: Archivo texto
10
Y finalmente presentamos la salida por pantalla de nuestro compilador.
Figura 13: Resultado de la conversi´on
Para una mejor comprensi´on se puede descargar el c´odigo del compilador desde el reposi-
torio de google code en el siguiente enlace: https://code.google.com/p/conversor-enteros-binario
source/browse/#svn%2Ftrunk%2FConvertirEnterosBinarios
11
E. Bibliograf´ıa
1. Sistemas Inteligentes en Ingenier´ıa Civ´ıl. “Introducci´on a las Redes Neuronales Artifi-
ciales”. [En l´ınea]. Disponible en: http://optimizacionheuristica.blogs.upv.es/
files/2013/04/Introducci%C3%B3n-Redes-Neuronales-ArtificialesMFM.pdf
2. Introducci´on a Las Redes Neuronales (Neurales) CO-6612. “Acerca de la Funci´on de Ac-
tivaci´on” [En l´ınea] Disponible en: http://prof.usb.ve/mvillasa/redes/Introduccion-vl.
pdf
3. Introducci´on a Las Redes Neuronales Artificiales. “Funciones de Activaci´on y de Salida”
[En l´ınea] Disponible en: http://hugo-inc.com/RNA/Unidad%201/1.6.html
12

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

TALLER FLEX Y BISON
TALLER FLEX Y BISONTALLER FLEX Y BISON
TALLER FLEX Y BISON
 
/Media/tom nissim/cursocpp
/Media/tom nissim/cursocpp/Media/tom nissim/cursocpp
/Media/tom nissim/cursocpp
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONLENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
P01 secuencial
P01 secuencialP01 secuencial
P01 secuencial
 
Santaella u5 Lenguaje C++
Santaella u5 Lenguaje C++Santaella u5 Lenguaje C++
Santaella u5 Lenguaje C++
 
Lenguaje
LenguajeLenguaje
Lenguaje
 
Curso básico de ensamblador
Curso básico de ensambladorCurso básico de ensamblador
Curso básico de ensamblador
 
C++
C++C++
C++
 
Compilador sobre conversión de unidades
Compilador sobre conversión de unidadesCompilador sobre conversión de unidades
Compilador sobre conversión de unidades
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Lenguaje c 1
Lenguaje c   1Lenguaje c   1
Lenguaje c 1
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison
 
Compilador - Área de trapecio
Compilador - Área de trapecioCompilador - Área de trapecio
Compilador - Área de trapecio
 
UNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICAUNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICA
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3
 

Similar a Compiladores informe final

Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladoresSheyli Patiño
 
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 para la generación de código a partir de las iniciales de los nomb...
Compilador para la generación de código a partir de las iniciales de los nomb...Compilador para la generación de código a partir de las iniciales de los nomb...
Compilador para la generación de código a partir de las iniciales de los nomb...Ana Mora
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cupditopo
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresChristian Lara
 
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
 
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 (divisor de cantidades )
Compilador (divisor de cantidades )Compilador (divisor de cantidades )
Compilador (divisor de cantidades )Soraya Lara
 
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
 
Cap3
Cap3Cap3
Cap3CJAO
 
Compilador concatenacion
Compilador concatenacionCompilador concatenacion
Compilador concatenacionjessy Cueva
 
Informe compilador divisor
Informe compilador divisorInforme compilador divisor
Informe compilador divisorSoraya Lara
 
Corporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisyCorporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisyDeisy Nereida Lozada Ortiz
 
Informe tecnico u4 final
Informe tecnico u4 finalInforme tecnico u4 final
Informe tecnico u4 finalIrving Che
 

Similar a Compiladores informe final (20)

Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladores
 
Compilador Convertidor de Divisas
Compilador Convertidor de DivisasCompilador Convertidor de Divisas
Compilador Convertidor de Divisas
 
Documeto compilardorcontadorletras
Documeto compilardorcontadorletrasDocumeto compilardorcontadorletras
Documeto compilardorcontadorletras
 
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 para la generación de código a partir de las iniciales de los nomb...
Compilador para la generación de código a partir de las iniciales de los nomb...Compilador para la generación de código a partir de las iniciales de los nomb...
Compilador para la generación de código a partir de las iniciales de los nomb...
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cup
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladores
 
Analizador Lexico
Analizador LexicoAnalizador Lexico
Analizador Lexico
 
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
 
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 (divisor de cantidades )
Compilador (divisor de cantidades )Compilador (divisor de cantidades )
Compilador (divisor de cantidades )
 
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
 
Cap3
Cap3Cap3
Cap3
 
Compilador concatenacion
Compilador concatenacionCompilador concatenacion
Compilador concatenacion
 
Informe compilador divisor
Informe compilador divisorInforme compilador divisor
Informe compilador divisor
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Corporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisyCorporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisy
 
Informe tecnico u4 final
Informe tecnico u4 finalInforme tecnico u4 final
Informe tecnico u4 final
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 

Último

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfYanitza28
 
Retornamos a la escuela y nos organizamos para convivir en armonía
Retornamos a la escuela y nos organizamos para convivir en armoníaRetornamos a la escuela y nos organizamos para convivir en armonía
Retornamos a la escuela y nos organizamos para convivir en armoníaJuanPabloVictorianoS
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...solanocortezluisalfr
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfYanitza28
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 

Último (17)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Retornamos a la escuela y nos organizamos para convivir en armonía
Retornamos a la escuela y nos organizamos para convivir en armoníaRetornamos a la escuela y nos organizamos para convivir en armonía
Retornamos a la escuela y nos organizamos para convivir en armonía
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 

Compiladores informe final

  • 1. CIS-IX-B UNIVERSIDAD NACIONAL DE LOJA ´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables Carrera de Ingenier´ıa en Sistemas “Conversor de Enteros a Binarios” Informe Final N´oveno B Responsable: • Morocho Morocho Priscila Beatriz Docente: • Ing.: Henry Paz Loja - Ecuador 2015 1
  • 2. ´Indice general A. Compiladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 B. Descripci´on del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 C. Aut´omata del Compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 D. Compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1 . Analizador Lexico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 . Analizador Sint´actico . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 . Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 E. Bibliograf´ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2
  • 3. Conversor de Enteros a Binarios A. Compiladores Los compiladores como los int´erpretes son programas de gran complejidad. Un compila- dor no es m´as que un traductor, es decir un programa que nos permite pasar informaci´on de un lenguaje a otro. Por ejemplo, un compilador de C nos permite traducir ficheros escritos en lenguaje C a un lenguaje legible para la m´aquina. Al final tendremos un ´unico programa que ser´ıa el traductor. Este traductor tendr´ıa un analizador sint´actico, y a su vez el analizador sint´actico tendr´ıa un analizador l´exico. [1] An´alisis l´exico:Se encarga de la divisi´on de la entrada en componentes l´exicos. An´alisis sint´actico:Se encarga de encontrar las estructuras presentes en la entrada. An´alisis sem´antico:Se encarga de comprobar que se cumplen las restricciones sem´anti- cas del lenguaje. B. Descripci´on del Problema El siguiente compilador lo que va a resolver es la conversi´on de n´umeros enteros a bina- rios, para que se realice la operaci´on se deber´a ingresar el n´umero a convertir seguido de la palabra reservada convertir, por ejemplo: 256 convertir. Esto lo vamos a realizar en un archivo txt que posteriormente lo leeremos con nuestro compi- lador, en el caso de que se ingrese de forma incorrecta saldran los debidos errores del archivo. Para realizar la codificaci´on del compilador se necesita de las librerias JFLEX y CUP, al mismo se lo realiza con el lenguaje java por medio del IDE Netbeans. C. Aut´omata del Compilador ´Este compilador tendr´a la estructura que se muestra a continuaci´on: Figura 1: Aut´omata del conversor 3
  • 4. D. Compilador 1 . Analizador Lexico JFlex es un generador de analizador l´exico para Java, est´a dise˜nado para trabajar junto con el generador de analizador LALR CUP. Tambi´en se puede utilizar junto con otros gene- radores de analizadores sint´acticos como antlr o como una herramienta independiente.[2] Este generador toma una cadena de caracteres como entrada y lo convierte en una secuencia de tokens, consta de 3 partes principales en su estructura que son: opciones y declaraciones, c´odigo de usuario y reglas l´exicas. Opciones y declaraciones: En esta secci´on van los paquetes que se van a utilizar, aqu´ı se declaran las directivas y macros, se indica el nombre de la clase, en este caso Analizadorlexico, se habilita line y column para obtener la l´ınea y columna de la posici´on actual del compilador y cup para realizar la integraci´on con el archivo cup, en esta secci´on van las siguientes l´ıneas de codigo: • package ejemplocup: Esto nos indica el paquete en el cual nuestra clase se encuentra. • import javacup.runtime: Esta importaci´on permitir´a hacer la implementaci´on con cup. • import java.io.Reader: Io Reader nos permitira leer nuestro archivo en el que estara el n´umero a convertir. • %class AnalizadorLexico: Nombre de nuestra clase java. • %line: Indica la posici´on de la l´ınea. • %column: Indica la posici´on de la columna. • %cup: Nos permitir´a realizar la compatibilidad con Cup. Figura 2: Opciones y Declaraciones 4
  • 5. C´odigo de usuario: En esta secci´on van las directivas, o especificaciones para obtener la salida deseada. Tambi´en se encuentra aqui los metodos para encontrar los tokens deseados. Estos 2 m´etodos van a permitir trabajar con la clase symbol la cual ser´a de ayuda para que al momento de analizar la expresi´on nos devuelva los tokens encontrados en la misma. Figura 3: M´etodos En esta secci´on especificamos nuestro c´odigo creando tres variables, la variable salto que indica que se ignorar´a los saltos de l´ınea, retorno de carro o salto de linea y retorno de carro, la variable espacio que indica que se ignora lo declarado en la variable anterior, o tabulador y fin de linea y por ´ultimo una variable entero donde vamos a aceptar enteros del 0 al 9 y todas sus combinaciones. Figura 4: C´odigo de Usuario Reglas l´exicas: En esta secci´on del archivo JFlex, es donde se definen las reglas para obtener los tokens de la cadena que se esta leyendo. D´onde: • convertir return symbol(sym.FINAL,yyline,yycolumn); Es el operador que me permitir´a hacer la transformaci´on de un entero decimal a binario, a este Token se lo llamara FINAL. • {Entero} return symbol(sym.ENTERO, new Integer(yytext()),yyline,yycolumn); Me indica que se va a ingresar un entero al cual lo vamos a transformor, el nombre para este token es el de ENTERO. En la imagen siguiente se puede ver, lo que se ha explicado: 5
  • 6. Figura 5: Reglas l´exicas Aqu´ı tambi´en encontramos el siguiente c´odigo que nos lanzar´a informaci´on acerca de la posici´on de algun error encontrado en caso de haberlo. Figura 6: Reglas l´exicas - captura errores 2 . Analizador Sint´actico Luego de realizar el analizador l´exico se realiza el analizador sint´actico, para el cual vamos a emplear la libreria CUP, Cup est´a escrito en Java, utiliza especificaciones incluyendo c´odigo Java embebido, y produce programas de an´alisis que se implementan en Java. Nuestro archivo cup esta conformado por [3]: Definici´on de paquete y sentencias import. • package ejemplocup: Esto nos indica el paquete en el cual nuestra clase se encuentra. • import javacup.runtime.*: Esta importaci´on permitir´a hacer la implementa- ci´on con cup. • import java.io.Reader: Io Reader nos permitira leer nuestro archivo en el que estara el n´umero a convertir. Figura 7: Paquetes e importaciones 6
  • 7. Secci´on del parser code, aqu´ı estar´an los metodos que nos permitir´an capturar los errores encontrados, los mismos que los describiremos a continuaci´on: • report error: Este m´etodo recibe un mensaje de tipo string y info de tipo object. Aqu´ı se crea un objeto m de tipo StringBuilder a la cual se la inciar´a con el valor de Error, luego creo un objeto de tipo Symbol que se lo denomin´o s, el cual me servir´a para econtrar la fila y la columna d´onde se muestre el error. El m´etodo: String var=info.toString()+; String[] varres=var.split(””); if (Integer.parseInt(varres[1])==sym.EOF) { System.err.println(”Falta Ingresar el operador convertir ”); } else{ if (Integer.parseInt(varres[1])==sym.FINAL) { System.err.println(.Er ror con la palabra reservada convertir ´o Error falta ingresar entero a convertir”); } } m.append(”: -message); // System.err.println(m); } Me permitir´a primero crear una variable de tipo String a que le denominamos var, luego en el paso posteior se crea un arreglo de cadenas en d´onde se va a ir guardando las variables ingresadas. Luego pregunta si la posici´on 1 del arreglo es igual al token de Fin de archivvo, si ese fuera el caso me arroja el mensaje: Falta ingresar el operador convertir De darse el caso contrario ah´ı quiere decir que el arreglo de cadenas de posicion 1, sea igual al token FINAL que hace referencia al operador Convertir del proyecto, se emite el mensaje: Error ingresar convertir. • report fatal error Este m´etodo funcionar´a en caso que se encuentre un error en el cual el sistema no pueda recuperarse, lanzando un mensaje de informaci´on. 7
  • 8. Figura 8: M´etodos de Errores Encontrados En esta secci´on tambi´en encontramos el m´etodo main que permitir´a garantizar la ejecuci´on del analizador lexico y sint´actico. Figura 9: M´etodo Main Declaraci´on de s´ımbolos terminales y no terminales. Se declaran dos teminales el uno un entero y el otro final, y dos no terminales el uno de tipo object imprime y el otro de tipo string codigo. Figura 10: Terminales y No terminales Secci´on de la gram´atica 8
  • 9. Las gram´aticas sirven para armar las expresiones aceptadas en el compilador. Todos los terminos no t´erminales deben tener su gram´atica declarada para determinar su valor. El c´odigo Java que se requiera usar debe ser colocado entre {: c´odigo :} La gram´atica propuesta para este proyecto debe seguir la siguiente estructura: • ENTERO FINAL Ejemplo: • 12324 convertir En la imagen que ver´an a continuaci´on indico la gram´atica en d´onde se vera la forma que tendra la sentencia para realizar la conversion de decimal a binario, declarando para ellos los t´erminos terminales de acuerdo a la forma que el analizador sint´actico aceptar´a. Figura 11: M´etodo para convertir 3 . Resultados Para poder realizar las conversiones con nuestro compilador vamos a tener un archivo .txt en el cual est´e el n´umero a convertir con el siguiente formato: (n´umero) Operador Por lo tanto si el n´umero al que queremos transformar a binario es el 400, lo vamos a guardar en el .txt para que el compilador pueda leer y convertir al n´umero deseado. Ejemplos: Entrada: 400 convertir Salida: RESULTADO BINARIO: 110010000 Si se ingresa de forma incorrecta nos puede presentar las siguientes salidas Entrada: convertir 9
  • 10. Salida: Error con la palabra reservada convertir ´o Error falta ingresar entero a con- vertir Entrada: 34 vertir Salida: • El caracter ingresado no es valido (v)posicion(0 5) • El caracter ingresado no es valido (e)posicion(0 6) • El caracter ingresado no es valido (r)posicion(0 7) • El caracter ingresado no es valido (t)posicion(0 8) • El caracter ingresado no es valido (i)posicion(0 9) • El caracter ingresado no es valido (r)posicion(0 10) • Falta Ingresar el operador convertir Entrada: 27 convertirdd Salida: • RESULTADO BINARIO: 11011 • El caracter ingresado no es valido (d)posicion(0 12) • El caracter ingresado no es valido (d)posicion(0 13) La siguiente figura muestra el archivo .txt en el cual se ingresa el n´umero a convertir: Figura 12: Archivo texto 10
  • 11. Y finalmente presentamos la salida por pantalla de nuestro compilador. Figura 13: Resultado de la conversi´on Para una mejor comprensi´on se puede descargar el c´odigo del compilador desde el reposi- torio de google code en el siguiente enlace: https://code.google.com/p/conversor-enteros-binario source/browse/#svn%2Ftrunk%2FConvertirEnterosBinarios 11
  • 12. E. Bibliograf´ıa 1. Sistemas Inteligentes en Ingenier´ıa Civ´ıl. “Introducci´on a las Redes Neuronales Artifi- ciales”. [En l´ınea]. Disponible en: http://optimizacionheuristica.blogs.upv.es/ files/2013/04/Introducci%C3%B3n-Redes-Neuronales-ArtificialesMFM.pdf 2. Introducci´on a Las Redes Neuronales (Neurales) CO-6612. “Acerca de la Funci´on de Ac- tivaci´on” [En l´ınea] Disponible en: http://prof.usb.ve/mvillasa/redes/Introduccion-vl. pdf 3. Introducci´on a Las Redes Neuronales Artificiales. “Funciones de Activaci´on y de Salida” [En l´ınea] Disponible en: http://hugo-inc.com/RNA/Unidad%201/1.6.html 12