SlideShare una empresa de Scribd logo
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

DOCX
INVESTIGACIÓN DE CHIPSET
DOC
ejercicios de subnetting
PDF
automatas finitos
PPT
Dispositivos InaláMbricos
PPT
Código intermedio
PPTX
Teoria de automatas
PPTX
Compiladores, Analisis Lexico
INVESTIGACIÓN DE CHIPSET
ejercicios de subnetting
automatas finitos
Dispositivos InaláMbricos
Código intermedio
Teoria de automatas
Compiladores, Analisis Lexico

La actualidad más candente (20)

PPTX
Grupo 4 metodos de multiplexacion
PPTX
Presentacion http y https
DOC
Ud2 hoja1 correccion
PPT
Arquitectura protocolos
PDF
Multivibradores
PDF
Tecnologia WiMAX
PPT
Dispositivos de Red y las Capas de Operacion
PPTX
Teoría de autómatas
PPTX
Origen del Modelo OSI y su impacto en als estructuras de redes
PDF
Uso de modelos en capas
PDF
Bases de datos distribuidas
PDF
GRAMATICAS AMBIGUAS
PPTX
Lenguaje C y los Sistemas Operativos Actuales
PPTX
Organización y estructura interna del cpu
PDF
Ensamblador y lenguaje c
PPTX
Modulación AM - PM - FM
PDF
Codigo de bloques lineales
DOCX
SUBNETTING
DOCX
Trabajo de compiladores completo alexandra
Grupo 4 metodos de multiplexacion
Presentacion http y https
Ud2 hoja1 correccion
Arquitectura protocolos
Multivibradores
Tecnologia WiMAX
Dispositivos de Red y las Capas de Operacion
Teoría de autómatas
Origen del Modelo OSI y su impacto en als estructuras de redes
Uso de modelos en capas
Bases de datos distribuidas
GRAMATICAS AMBIGUAS
Lenguaje C y los Sistemas Operativos Actuales
Organización y estructura interna del cpu
Ensamblador y lenguaje c
Modulación AM - PM - FM
Codigo de bloques lineales
SUBNETTING
Trabajo de compiladores completo alexandra
Publicidad

Similar a Compiladores informe final (20)

PDF
Ejercicio compiladores
PDF
Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...
PDF
Compilador Convertidor de Divisas
PDF
Compilador Usando Jflex y Cup
PDF
Documeto compilardorcontadorletras
PDF
Compilador para la generación de código a partir de las iniciales de los nomb...
PDF
Ensayo Compilador Suma y Resta
PDF
Informe compilador divisor
PDF
Compilador (divisor de cantidades )
PDF
Compilador divisor de cantidades con Jflex y Cup
PDF
Compilador sobre conversión de unidades
PDF
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
PDF
Analizador de una matriz utilizando compiladores
PDF
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
PDF
Proyecto de compiladores_unl
PDF
Compilador concatenacion
PDF
Compilador - Área de trapecio
PDF
04 j flex
DOCX
Taller de Compiladores flx y bsn
DOCX
Compiladores (1) pedro vasques
Ejercicio compiladores
Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...
Compilador Convertidor de Divisas
Compilador Usando Jflex y Cup
Documeto compilardorcontadorletras
Compilador para la generación de código a partir de las iniciales de los nomb...
Ensayo Compilador Suma y Resta
Informe compilador divisor
Compilador (divisor de cantidades )
Compilador divisor de cantidades con Jflex y Cup
Compilador sobre conversión de unidades
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
Analizador de una matriz utilizando compiladores
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
Proyecto de compiladores_unl
Compilador concatenacion
Compilador - Área de trapecio
04 j flex
Taller de Compiladores flx y bsn
Compiladores (1) pedro vasques
Publicidad

Último (20)

PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
Presentación de Redes de Datos modelo osi
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
Estrategia de apoyo tecnología miguel angel solis
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPT
Que son las redes de computadores y sus partes
PDF
Diapositiva proyecto de vida, materia catedra
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
SAP Transportation Management para LSP, TM140 Col18
Calidad desde el Docente y la mejora continua .pdf
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Sesion 1 de microsoft power point - Clase 1
Presentación de Redes de Datos modelo osi
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Estrategia de apoyo tecnología miguel angel solis
introduccion a las_web en el 2025_mejoras.ppt
Estrategia de apoyo tecnología grado 9-3
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Propuesta BKP servidores con Acronis1.pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Plantilla para Diseño de Narrativas Transmedia.pdf
REDES INFORMATICAS REDES INFORMATICAS.pptx
Que son las redes de computadores y sus partes
Diapositiva proyecto de vida, materia catedra
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Power Point Nicolás Carrasco (disertación Roblox).pptx

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