SlideShare una empresa de Scribd logo
CIS-IXB-001
UNIVERSIDAD
NACIONAL
DE LOJA
´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables
Carrera de Ingenier´ıa en Sistemas
Compiladores
Cambia de Color a una Palabra
Ingresada
Tarea- Extra Clase
Noveno B
Autor:
• Ra´ul Alexander G´omez Armijos
• Fecha: 13/02/2015
Docente: Ing. Henry-Paz,
Loja-Ecuador
2015
1
´Indice
A. Problema del compilador a Desarrollar: 4
B. Aut´omata 4
C. Desarrollo del Compilador 4
1 . Crear el Analizador L´exico . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1 .1. Opciones y declaraciones . . . . . . . . . . . . . . . . . . . . . . . . 5
1 .2. C´odigo de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1 .3. Reglas lexicogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 . Crear la clase token . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 . Generaci´on del Archivo L´exico . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 . Crear el Analizador Sint´actico . . . . . . . . . . . . . . . . . . . . . . . . . 7
5 . Generar el Archivo Sint´actico . . . . . . . . . . . . . . . . . . . . . . . . . 9
6 . Integraci´on del Analizador L´exico y Sint´actico . . . . . . . . . . . . . . . . 9
7 . Control de Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7 .1. Control de Errores del Analizador L´exico . . . . . . . . . . . . . . . 10
7 .2. Control de Errores del Analizador Sint´actico . . . . . . . . . . . . . 11
8 . Interfaz Gr´afica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
D. Anexos 17
E. BIBLIOGRAFIA 18
F. LICENCIA 19
´Indice de figuras
1. Aut´omata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Reglas Lexicogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Estructura de las Instrucciones del Analizador Sint´actico . . . . . . . . . . 8
4. Creaci´on de archivo.cup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5. Integraci´on del Analizador L´exico Sint´actico . . . . . . . . . . . . . . . . . 9
6. M´etodo Escribir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7. Constructor del Analizador L´exico . . . . . . . . . . . . . . . . . . . . . . . 10
8. Mensajes para mejor Interpretaci´on con el Usuario . . . . . . . . . . . . . . 11
9. Constructor del Analizador Sint´actico . . . . . . . . . . . . . . . . . . . . . 11
10. Mensajes presentados al Usuario . . . . . . . . . . . . . . . . . . . . . . . . 11
11. Identifica el error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
12. M´etodo report-fatal-error . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
13. Interfaz Gr´afica del Compilador . . . . . . . . . . . . . . . . . . . . . . . . 13
14. Funci´on que cumple cada Bot´on . . . . . . . . . . . . . . . . . . . . . . . . 14
15. Representaci´on de los Errores L´exicos . . . . . . . . . . . . . . . . . . . . . 15
16. Representaci´on de los Errores Sint´acticos . . . . . . . . . . . . . . . . . . . 16
3
A. Problema del compilador a Desarrollar:
Realizar un compilador que permita ingresar una cadena y que a dicha cadena ingre-
sada se cambie de color, por un color seleccionado. Adem´as que contenga la estructura de
un programa de la siguiente manera
Inicio
Color Seleccionado
Cadena ingresada
Fin
B. Aut´omata
Como se representa en la Figura 1. del aut´omata la estructura que va a llevar el
compilador para su mejor entendimiento.
Figura 1: Aut´omata
C. Desarrollo del Compilador
El compilador se lo desarrollara en c´odigo java haciendo uso de las librer´ıas de JFLEX
y CUP por medio del IDE de desarrollo Netbeans. A continuaci´on detallaremos cada uno
de los pasos a seguir para la creaci´on de dicho compilador. Nota: Para el desarrollo del
presente proyecto se debe crear un proyecto nuevo de java en el IDE y luego importar las
debidas librer´ıas (jflex y cup );
4
1 . Crear el Analizador L´exico
Para el desarrollo del Analizador l´exico se debe tener presente las tres partes impor-
tantes por la que se encuentra conformado.
Secci´on 1: Opciones y declaraciones
Secci´on 2: C´odigo de usuario
Secci´on 3: Reglas lexicogr´aficas
1 .1. Opciones y declaraciones
La primera parte del archivo es el bloque donde se importaran los paquetes que se van
a utilizar para nuestro analizador en nuestro caso importaremos las siguientes librer´ıas y
escribimos el nombre del paquete correspondiente, donde la clase Symbol nos sirve para
devolver un objeto del mismo tipo y poder obtener los valores correspondientes:
package color;
import java-cup.runtime.Symbol;
Declaramos las directivas y Macros
%class AnalizadorLexico
%public
%line
%column
%cup
Donde especificamos que el nombre de la clase a generar se llamar´a AzalizadorLexico.java
de tipo p´ublica y habilitamos %line y %column que nos permite obtener la l´ınea y la co-
lumna de la posici´on actual del compilador y el %cup que nos permite la integraci´on con
el archivo Cup.
1 .2. C´odigo de usuario
En esta secci´on de declarar el c´odigo que se va a utilizar, pero en nuestro caso no lo
utilizaremos, as´ı que pasamos a la reglas lexicogr´aficas.
1 .3. Reglas lexicogr´aficas
La Figura 2 una parte esencial dentro del funcionamiento del analizador, en este se
determinar´an el conjunto de expresiones regulares que se utilizar´an durante el proceso
de an´alisis, a continuaci´on se detalla las declaraciones utilizadas: Donde las variables de
Figura 2: Reglas Lexicogr´aficas
5
SaltoLinea y espacios son declarados para despu´es ignorarlos en el analizador Sint´actico,
ValorEntero y ValorTexto son el lenguaje que va a entender el compilador
LUEGO DECLARAMOS LOS OPERADORES Y SIGNOS A UTILIZAR
Donde cada una de ellas se encargan de retornar un nuevo objeto de tipo Symbol el mismo
que se encuentra estructurado de un valor entero y objeto de tipo token para asignar la
columna y l´ınea en la que se encuentra como adicional el valor del token correspondiente
como se representa a continuaci´on.
”,”return new Symbol(sym.COMA, new token(yycolumn, yyline, yytext()));
”(”return new Symbol(sym.ABRIRPAR, new token(yycolumn, yyline, yytext()));
”)”return new Symbol(sym.CERRARPAR, new token(yycolumn, yyline, yytext()));
SE DETALLA CADA UNA DE LAS PALABRAS RESERVADAS
Donde cada una de ellas se encargan de retornar un nuevo objeto de tipo Symbol el mismo
que se encuentra estructurado de un valor entero y objeto de tipo token para asignar la
columna y l´ınea en la que se encuentra como adicional el valor del token correspondiente
como se representa a continuaci´on.
((inicio¿”return new Symbol(sym.INICIO, new token(yycolumn, yyline, yytext()));
((/fin¿”return new Symbol(sym.FIN, new token(yycolumn, yyline, yytext()));
((cadena¿”return new Symbol(sym.CADENA, new token(yycolumn, yyline, yytext()));
((color¿”return new Symbol(sym.COLOR, new token(yycolumn, yyline, yytext()));
Y AL FINAL LAS EXPRESIONES QUE IDENTIFICARA EL COMPILADOR
donde de la misma manera retornamos un objeto de tipo Symbol correspondiente para
cada valor donde recibe como par´ametro un valor entero y objeto de tipo token para
asignar la columna y l´ınea en la que se encuentra como adicional el valor del token co-
rrespondiente como se representa a continuaci´on.
ValorTexto return new Symbol(sym.VALTEXT, new token(yycolumn, yyline, yytext()));
ValorEntero return new Symbol(sym.VALINT, new token(yycolumn, yyline, yytext()));
SaltoLinea return new Symbol(sym.ENTER, new token(yycolumn, yyline, yytext()));
espacios /* ignorar */
/*esta ´ultima l´ınea se encarga de presentar el car´acter invalido ingresado como la l´ınea y
la columna en la que se encuentre*/ . System.err.println(¸car´acter invalido- yytext() + ”[-
yyline + ”:- yycolumn + ”]”);
6
2 . Crear la clase token
Como se puede observar en la secci´on anterior se hace uso de una instancia de la
clase token, la misma que me permite almacenar la columna , la l´ınea y el nombre del
token establecido, para que de esta manera despu´es se pueda acceder a cada uno de estos
atributos de la mejor manera y poder realizar las operaciones correspondientes.
3 . Generaci´on del Archivo L´exico
Una vez establecido el analizador l´exico se procede a la ejecuci´on del mismo para que
se genere la clase AnalizadorLexico.java de la siguiente manera.
jflex.Main.generate(new File( ”src-File.separator+¸color- File.separator + ”Lexico.flex”));
donde jflex.Main.generate se importa de la librer´ıa JFlex el mismo que recibe como
par´ametro el archivo Lexico.flex creado anterior mente .
4 . Crear el Analizador Sint´actico
Una vez establecido el analizador l´exico procedemos a realizar el analizador Sint´actico
el mismo que se encarga de estructurar el c´odigo y dar sentido a nuestras reglas l´exicas.
Creamos un archivo con el nombre de Sintactico.cup en el cual escribiremos todo
nuestro c´odigo del analizador Sem´antico.
Definimos el nombre del paquete donde se va a generar nuestro AnalizadorSentacti-
co.java y importamos las librer´ıas necesarias a utilizar en nuestro caso de la siguiente
manera: package color; import java-cup.runtime.*; import java.util.ArrayList; im-
port java.io.FileReader;
Determinamos la secci´on del parser code : “c´odigo parser” : que contendr´a el c´odigo
java utilizado en nuestro caso sobre escribimos los m´etodos para la captura de errores
del compilador.
public void syntax-error(Symbol sy)
El mismo que determina si la sintaxis ingresada es la correcta.
public void report-error(String message, Object info)
Se encarga de dar un reporte de error en caso de ser encontrado
public void report-fatal-error(String message, Object info)
report-error(message, info);
System.exit(1);
Cuando se encuentra un error de donde el sistema no puede recuperarse, se lanza un
error fatal. Donde se despliega el mensaje de error y se finaliza la ejecuci´on. por tal
motivo, capturamos esa excepci´on y presentamos un mensaje identificando el tipo de error
producido.
7
En la secci´on del action code realizamos una instancia de la clase instrucci´on la
misma que se la genera posteriormente, para guardar el tipo de instrucci´on a ejecutar
(cadena,color). action code : ArrayList¡Instruccion¿instrucciones = new ArrayList();
:
Terminales, tenemos dos tipos de terminales los que no tienen ning´un valor asociado
y los escribimos en la primera l´ınea y los de la segunda l´ınea son los que tienen alg´un
valor, como es el caso del valor entero para los colores y el valor del texto que hace
referencia a la cadena.
terminal COMA,ABRIRPAR,CERRARPAR,INICIO,FIN,ENTER,COLOR,CADENA;
terminal token VALINT, VALTEXT;
No terminales, de la misma manera que los terminales pero son aquellas variables
que ser´an utilizadas para dar sentido y estructura al compilador
non terminal instrucciones, programa;
non terminal Instruccion instruccion,cadena,color;
Estructura del compilador : start with programa;
start with l´ınea de c´odigo que indica donde inicia la estructura del programa para despu´es
desglosar su estructura de la siguiente manera.
- programa ::= INICIO ENTER instrucciones ENTER FIN;
Donde en programa indicamos que el compilador va a estar dado de cada uno de los tokens
establecidos en la l´ınea anterior y Instrucciones donde se detalla en la Figura 3.
Figura 3: Estructura de las Instrucciones del Analizador Sint´actico
8
5 . Generar el Archivo Sint´actico
Una vez concluida la estructura del compilador procedemos a ejecutar el archivo.cup
para que se genere el .java y poder utilizarlo, de la siguiente manera como se representa
en la Figura 4:
Creamos una clase en java y escribimos el siguiente c´odigo
Figura 4: Creaci´on de archivo.cup
Donde String opciones[ ] nos permite asignar las caracter´ısticas necesarias para la com-
pilaci´on del archivo .cup, donde asignamos el paquete donde queremos que se genere el
archivo java, el nombre conque deseamos que se genere en este caso AnalizadorSintac-
tico.java y luego el paquete donde se encuentra el archivo .cup y su nombre respectivo
Sintactico.cup y con java-cup.Main realizamos la generaci´on correspondiente de la clase
AnalizadorSintactico.java y adem´as la clase sym que son generadas autom´aticamente.
6 . Integraci´on del Analizador L´exico y Sint´actico
Una vez creados cada uno de los analizadores se procede a la integraci´on de los dos
para dar sentido y estructura al compilador y final mente se procede realizar la estructura
sem´antica del compilador:
Integraci´on
Figura 5: Integraci´on del Analizador L´exico Sint´actico
9
M´etodo escribir() lo detallamos en la Figura 6 , EL mismo que me permite almacenar
en un archivo .txt lo que ingresamos por pantalla;
Figura 6: M´etodo Escribir
7 . Control de Errores
Luego se configura el AnalizadorL´exico y el Analizador Sint´actico para la captura de
Errores para definir la estructura sem´antica del compilador de la siguiente manera:
7 .1. Control de Errores del Analizador L´exico
De tal manera que se configuro el constructor del analizador l´exico (ver Figura 7.)
para poder enviar e interactuar con la interfaz gr´afica, donde se presenta y personaliza
los errores l´exicos.
Figura 7: Constructor del Analizador L´exico
10
Luego se personalizo cada uno de los mensajes (ver Figura 8.) para una mejor inter-
pretaci´on con el usuario e identifique que tipo de error se presenta, ingresando el valor
adecuado de error (token) en la columna y l´ınea actual en la que se encuentra de la
siguiente manera:
Figura 8: Mensajes para mejor Interpretaci´on con el Usuario
7 .2. Control de Errores del Analizador Sint´actico
Se configura los errores Sint´acticos para identificar si la sentencia ingresada se encuen-
tra bien estructurada y poder enviar los errores correspondientes. Personalizando cada
uno de ellos. (ver Figura 9.) Se Configura el constructor para la interacci´on con la vista
y poder presentar los mensajes de errores Y a continuaci´on se personaliza los mensajes
Figura 9: Constructor del Analizador Sint´actico
para presentarlos al usuario y determinar que tipo de error hay que corregir, presentando
por pantalla el error establecido como la l´ınea y la columna en la que se present´o dicho
error y adicional identificando que error se produjo como se representa en la Figura 10 y
Figura 11.
Figura 10: Mensajes presentados al Usuario
11
Figura 11: Identifica el error
Adicional se comenta la linea de codigo
System.exit(1) , (ver Figura 12);
en el m´etodo report-fatal-error(String message, Object info) debido a que si no lo hacemos
el compilador se cerrar´a repentina mente al encontrar un error.
Figura 12: M´etodo report-fatal-error
12
8 . Interfaz Gr´afica
Se realiza una interfaz gr´afica como se presenta en la figura 13 que me permita inter-
actuar de la mejor manera con el usuario y poder obtener un resultado e interacci´on m´as
eficiente.
Figura 13: Interfaz Gr´afica del Compilador
13
En la Figura 14: Representa el Funcionamiento de cada uno de los Botones del Com-
pilador.
Figura 14: Funci´on que cumple cada Bot´on
14
En la Figura 15: Representa cada uno de los errores L´exicos indicando cuales Carac-
teres pertenecen y cuales no a la sintaxis.
Figura 15: Representaci´on de los Errores L´exicos
15
Figura 16: Representa cada uno de los errores Sint´acticos que procesa el compilador.
Figura 16: Representaci´on de los Errores Sint´acticos
16
D. Anexos
Para un mejor an´alisis y comprensi´on del compilador lo adjuntamos al proyecto java en
el siguiente repositorio: https://ralexs04@bitbucket.org/ralexs04/compiladorcambiacolor.
git
17
E. BIBLIOGRAFIA
Referencias
[1] “Integraci´on del JFlex y Cup Rafael.” Rafael A. Vega [Octubre 2008]
[2] “El Analizador L´exico, el Analizador Sintactico y los diferentes tipos de compiladores
que hay.” S. Galvez. M Mora.
[3] “Integraci´on del JFlex y Cup Rafael.” Luis Antonio. Farias Tello [17-01-2013]
18
F. LICENCIA
Ensayo by Ra´ul A . G´omez A. is licensed Under a Creative Commons Reconocimiento-
NoComercial-CompartirIgual 3.0 Unported License.
19

Más contenido relacionado

Destacado

Ubivirtual windows7
Ubivirtual windows7Ubivirtual windows7
Ubivirtual windows7
fidelmen
 
¿Eres profesor freelance? Incentiva a tus alumnos a usar las redes sociales
¿Eres profesor freelance? Incentiva a tus alumnos a usar las redes sociales¿Eres profesor freelance? Incentiva a tus alumnos a usar las redes sociales
¿Eres profesor freelance? Incentiva a tus alumnos a usar las redes sociales
Karen Quintero Castañeda
 
Identidad en el arte.
Identidad en el arte.Identidad en el arte.
Identidad en el arte.
Omar Vega
 
Hobbies que te hacen más inteligente según la ciencia
Hobbies que te hacen más inteligente según la cienciaHobbies que te hacen más inteligente según la ciencia
Hobbies que te hacen más inteligente según la ciencia
Karen Quintero Castañeda
 
Inteligencia artificial (4)
Inteligencia artificial (4)Inteligencia artificial (4)
Inteligencia artificial (4)
2011HARRY
 
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
Karen Quintero Castañeda
 
Niveles de iconocidad[1]
Niveles de iconocidad[1]Niveles de iconocidad[1]
Niveles de iconocidad[1]
saulmaquinay
 
Las 5 excusas del procrastinador y qué hacer al respecto
Las 5 excusas del procrastinador y qué hacer al respectoLas 5 excusas del procrastinador y qué hacer al respecto
Las 5 excusas del procrastinador y qué hacer al respecto
Karen Quintero Castañeda
 
Informe sobre la quebrada singuiya
Informe sobre la quebrada singuiyaInforme sobre la quebrada singuiya
Informe sobre la quebrada singuiya
zulyruizmorales
 
Qué es la geografía económica(LauraA)
Qué es la geografía económica(LauraA)Qué es la geografía económica(LauraA)
Qué es la geografía económica(LauraA)
tallergeo
 
Diseño medios didacticos
Diseño medios didacticosDiseño medios didacticos
Diseño medios didacticos
formador_ocup_10
 
#IdeaFreelance 3: monetiza tu pequeño negocio con las redes sociales
#IdeaFreelance 3: monetiza tu pequeño negocio con las redes sociales#IdeaFreelance 3: monetiza tu pequeño negocio con las redes sociales
#IdeaFreelance 3: monetiza tu pequeño negocio con las redes sociales
Karen Quintero Castañeda
 
Sistemasmonoymulti 111009161758-phpapp01
Sistemasmonoymulti 111009161758-phpapp01Sistemasmonoymulti 111009161758-phpapp01
Sistemasmonoymulti 111009161758-phpapp01
jon102010
 
1ro plan anual
1ro plan anual1ro plan anual
El término web 2
El término web 2El término web 2
El término web 2
geraldineribon
 
Internet invisible
Internet invisible Internet invisible
Internet invisible
21_1987
 
Comandos XP
Comandos XPComandos XP
Comandos XP
anaarbeloa
 
Informe resultados cuestionario Accedo 2.0 mayo 2010
Informe resultados cuestionario Accedo 2.0 mayo 2010Informe resultados cuestionario Accedo 2.0 mayo 2010
Informe resultados cuestionario Accedo 2.0 mayo 2010
accedo20
 
Internet (Oscar Cerpa)
Internet (Oscar Cerpa)Internet (Oscar Cerpa)
Internet (Oscar Cerpa)
Ozkr Peñates
 
Boletín de octubre
Boletín de octubreBoletín de octubre
Boletín de octubre
UPyD Parla
 

Destacado (20)

Ubivirtual windows7
Ubivirtual windows7Ubivirtual windows7
Ubivirtual windows7
 
¿Eres profesor freelance? Incentiva a tus alumnos a usar las redes sociales
¿Eres profesor freelance? Incentiva a tus alumnos a usar las redes sociales¿Eres profesor freelance? Incentiva a tus alumnos a usar las redes sociales
¿Eres profesor freelance? Incentiva a tus alumnos a usar las redes sociales
 
Identidad en el arte.
Identidad en el arte.Identidad en el arte.
Identidad en el arte.
 
Hobbies que te hacen más inteligente según la ciencia
Hobbies que te hacen más inteligente según la cienciaHobbies que te hacen más inteligente según la ciencia
Hobbies que te hacen más inteligente según la ciencia
 
Inteligencia artificial (4)
Inteligencia artificial (4)Inteligencia artificial (4)
Inteligencia artificial (4)
 
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
 
Niveles de iconocidad[1]
Niveles de iconocidad[1]Niveles de iconocidad[1]
Niveles de iconocidad[1]
 
Las 5 excusas del procrastinador y qué hacer al respecto
Las 5 excusas del procrastinador y qué hacer al respectoLas 5 excusas del procrastinador y qué hacer al respecto
Las 5 excusas del procrastinador y qué hacer al respecto
 
Informe sobre la quebrada singuiya
Informe sobre la quebrada singuiyaInforme sobre la quebrada singuiya
Informe sobre la quebrada singuiya
 
Qué es la geografía económica(LauraA)
Qué es la geografía económica(LauraA)Qué es la geografía económica(LauraA)
Qué es la geografía económica(LauraA)
 
Diseño medios didacticos
Diseño medios didacticosDiseño medios didacticos
Diseño medios didacticos
 
#IdeaFreelance 3: monetiza tu pequeño negocio con las redes sociales
#IdeaFreelance 3: monetiza tu pequeño negocio con las redes sociales#IdeaFreelance 3: monetiza tu pequeño negocio con las redes sociales
#IdeaFreelance 3: monetiza tu pequeño negocio con las redes sociales
 
Sistemasmonoymulti 111009161758-phpapp01
Sistemasmonoymulti 111009161758-phpapp01Sistemasmonoymulti 111009161758-phpapp01
Sistemasmonoymulti 111009161758-phpapp01
 
1ro plan anual
1ro plan anual1ro plan anual
1ro plan anual
 
El término web 2
El término web 2El término web 2
El término web 2
 
Internet invisible
Internet invisible Internet invisible
Internet invisible
 
Comandos XP
Comandos XPComandos XP
Comandos XP
 
Informe resultados cuestionario Accedo 2.0 mayo 2010
Informe resultados cuestionario Accedo 2.0 mayo 2010Informe resultados cuestionario Accedo 2.0 mayo 2010
Informe resultados cuestionario Accedo 2.0 mayo 2010
 
Internet (Oscar Cerpa)
Internet (Oscar Cerpa)Internet (Oscar Cerpa)
Internet (Oscar Cerpa)
 
Boletín de octubre
Boletín de octubreBoletín de octubre
Boletín de octubre
 

Similar a Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada

Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladores
Sheyli Patiño
 
Compiladores informe final
Compiladores informe finalCompiladores informe final
Compiladores informe final
Priscila Morocho
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladores
Christian Lara
 
Compilador Convertidor de Divisas
Compilador Convertidor de DivisasCompilador Convertidor de Divisas
Compilador Convertidor de Divisas
Universidad Nacional de Loja
 
Compilador concatenacion
Compilador concatenacionCompilador concatenacion
Compilador concatenacion
jessy Cueva
 
Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...
Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...
Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...
Diego Paúl Cuenca Quezada
 
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
 
Ensayo Compilador Suma y Resta
Ensayo Compilador Suma y RestaEnsayo Compilador Suma y Resta
Ensayo Compilador Suma y Resta
hepavien
 
Resumen1
Resumen1Resumen1
Proyecto de compiladores_unl
Proyecto de compiladores_unlProyecto de compiladores_unl
Proyecto de compiladores_unl
Yandry Ramírez S
 
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
DavidErnestoT
 
Documeto compilardorcontadorletras
Documeto compilardorcontadorletrasDocumeto compilardorcontadorletras
Documeto compilardorcontadorletras
Sebastian Ocampo Vélez
 
aprendepython.pdf
aprendepython.pdfaprendepython.pdf
aprendepython.pdf
AlejandroCastilloVal2
 
PLC
PLC PLC
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE C
claudiocj7
 
Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numerico
LUIS COAQUIRA
 
Compilador sobre conversión de unidades
Compilador sobre conversión de unidadesCompilador sobre conversión de unidades
Compilador sobre conversión de unidades
Diego Guaman
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cup
ditopo
 
Practicas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmosPracticas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmos
Chucho E. Peña
 
Programación en c j. carlos lopez ardao
Programación en c   j. carlos lopez ardaoProgramación en c   j. carlos lopez ardao
Programación en c j. carlos lopez ardao
victdiazm
 

Similar a Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada (20)

Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladores
 
Compiladores informe final
Compiladores informe finalCompiladores informe final
Compiladores informe final
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladores
 
Compilador Convertidor de Divisas
Compilador Convertidor de DivisasCompilador Convertidor de Divisas
Compilador Convertidor de Divisas
 
Compilador concatenacion
Compilador concatenacionCompilador concatenacion
Compilador concatenacion
 
Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...
Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...
Analizador Léxico y Sintáctico para Compilador que Invierte Cadenas utilizand...
 
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...
 
Ensayo Compilador Suma y Resta
Ensayo Compilador Suma y RestaEnsayo Compilador Suma y Resta
Ensayo Compilador Suma y Resta
 
Resumen1
Resumen1Resumen1
Resumen1
 
Proyecto de compiladores_unl
Proyecto de compiladores_unlProyecto de compiladores_unl
Proyecto de compiladores_unl
 
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
 
Documeto compilardorcontadorletras
Documeto compilardorcontadorletrasDocumeto compilardorcontadorletras
Documeto compilardorcontadorletras
 
aprendepython.pdf
aprendepython.pdfaprendepython.pdf
aprendepython.pdf
 
PLC
PLC PLC
PLC
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE C
 
Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numerico
 
Compilador sobre conversión de unidades
Compilador sobre conversión de unidadesCompilador sobre conversión de unidades
Compilador sobre conversión de unidades
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cup
 
Practicas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmosPracticas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmos
 
Programación en c j. carlos lopez ardao
Programación en c   j. carlos lopez ardaoProgramación en c   j. carlos lopez ardao
Programación en c j. carlos lopez ardao
 

Último

Evaluacion Formativa en el Aula ECH1 Ccesa007.pdf
Evaluacion Formativa en el Aula   ECH1  Ccesa007.pdfEvaluacion Formativa en el Aula   ECH1  Ccesa007.pdf
Evaluacion Formativa en el Aula ECH1 Ccesa007.pdf
Demetrio Ccesa Rayme
 
Taller Intensivo de Formación Continua 2024
Taller Intensivo de Formación Continua 2024Taller Intensivo de Formación Continua 2024
Taller Intensivo de Formación Continua 2024
maria larios
 
Tu, Tu Hijo y la Escuela Ken Robinson Ccesa007.pdf
Tu,  Tu Hijo y la  Escuela  Ken Robinson  Ccesa007.pdfTu,  Tu Hijo y la  Escuela  Ken Robinson  Ccesa007.pdf
Tu, Tu Hijo y la Escuela Ken Robinson Ccesa007.pdf
Demetrio Ccesa Rayme
 
Como hacer que te pasen cosas buenas MRE3 Ccesa007.pdf
Como hacer que te pasen cosas buenas  MRE3  Ccesa007.pdfComo hacer que te pasen cosas buenas  MRE3  Ccesa007.pdf
Como hacer que te pasen cosas buenas MRE3 Ccesa007.pdf
Demetrio Ccesa Rayme
 
fichas descriptivas para primaria 2023-2024
fichas descriptivas para primaria 2023-2024fichas descriptivas para primaria 2023-2024
fichas descriptivas para primaria 2023-2024
Verito51
 
PLANIFICACION PARA NIVEL INICIAL FEBRERO 2023
PLANIFICACION PARA NIVEL INICIAL FEBRERO 2023PLANIFICACION PARA NIVEL INICIAL FEBRERO 2023
PLANIFICACION PARA NIVEL INICIAL FEBRERO 2023
MariaAngelicaMachica
 
Recursos digitales para trabajar la educación literaria en el aula: abriendo ...
Recursos digitales para trabajar la educación literaria en el aula: abriendo ...Recursos digitales para trabajar la educación literaria en el aula: abriendo ...
Recursos digitales para trabajar la educación literaria en el aula: abriendo ...
IGNACIO BALLESTER PARDO
 
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdfSEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
GavieLitiumGarcia
 
Semana 1 Derecho a interponer recursos y reparación.
Semana 1 Derecho a interponer recursos y reparación.Semana 1 Derecho a interponer recursos y reparación.
Semana 1 Derecho a interponer recursos y reparación.
SergioAlfrediMontoya
 
Introducción a las herramientas de Google Apps (3 de julio de 2024)
Introducción a las herramientas de Google Apps (3 de julio de 2024)Introducción a las herramientas de Google Apps (3 de julio de 2024)
Introducción a las herramientas de Google Apps (3 de julio de 2024)
Cátedra Banco Santander
 
Escuelas Creativas Ken Robinson Ccesa007.pdf
Escuelas Creativas Ken Robinson   Ccesa007.pdfEscuelas Creativas Ken Robinson   Ccesa007.pdf
Escuelas Creativas Ken Robinson Ccesa007.pdf
Demetrio Ccesa Rayme
 
PLAN ANUAL DE TRABAJO (PAT) 2024 MINEDU PERÚ
PLAN ANUAL DE TRABAJO (PAT) 2024 MINEDU PERÚPLAN ANUAL DE TRABAJO (PAT) 2024 MINEDU PERÚ
PLAN ANUAL DE TRABAJO (PAT) 2024 MINEDU PERÚ
Ferrer17
 
ejemplos-del-servicio-cristiano-fiel (1).pptx
ejemplos-del-servicio-cristiano-fiel (1).pptxejemplos-del-servicio-cristiano-fiel (1).pptx
ejemplos-del-servicio-cristiano-fiel (1).pptx
gersonobedgabrielbat1
 
Revista Universidad de Deusto - Número 155 / Año 2024
Revista Universidad de Deusto - Número 155 / Año 2024Revista Universidad de Deusto - Número 155 / Año 2024
Revista Universidad de Deusto - Número 155 / Año 2024
Universidad de Deusto - Deustuko Unibertsitatea - University of Deusto
 
EJEMPLOS DE FLORA Y FAUNA DE LA COSTA PERUANA
EJEMPLOS DE FLORA Y FAUNA DE LA COSTA PERUANAEJEMPLOS DE FLORA Y FAUNA DE LA COSTA PERUANA
EJEMPLOS DE FLORA Y FAUNA DE LA COSTA PERUANA
dairatuctocastro
 
2. LA ENERGIA Y TIPOSGRADO SEXTO.SANTA TERESApptx
2. LA ENERGIA Y TIPOSGRADO SEXTO.SANTA TERESApptx2. LA ENERGIA Y TIPOSGRADO SEXTO.SANTA TERESApptx
2. LA ENERGIA Y TIPOSGRADO SEXTO.SANTA TERESApptx
nelsontobontrujillo
 
Introducción a la seguridad básica (3 de julio de 2024)
Introducción a la seguridad básica (3 de julio de 2024)Introducción a la seguridad básica (3 de julio de 2024)
Introducción a la seguridad básica (3 de julio de 2024)
Cátedra Banco Santander
 
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docxDiscurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Centro de Bachillerato Tecnológico industrial y de servicios No. 209
 
Cultura Organizacional con Responsabilidad Social Empresarial.pdf
Cultura Organizacional con Responsabilidad Social Empresarial.pdfCultura Organizacional con Responsabilidad Social Empresarial.pdf
Cultura Organizacional con Responsabilidad Social Empresarial.pdf
JonathanCovena1
 
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Juan Martín Martín
 

Último (20)

Evaluacion Formativa en el Aula ECH1 Ccesa007.pdf
Evaluacion Formativa en el Aula   ECH1  Ccesa007.pdfEvaluacion Formativa en el Aula   ECH1  Ccesa007.pdf
Evaluacion Formativa en el Aula ECH1 Ccesa007.pdf
 
Taller Intensivo de Formación Continua 2024
Taller Intensivo de Formación Continua 2024Taller Intensivo de Formación Continua 2024
Taller Intensivo de Formación Continua 2024
 
Tu, Tu Hijo y la Escuela Ken Robinson Ccesa007.pdf
Tu,  Tu Hijo y la  Escuela  Ken Robinson  Ccesa007.pdfTu,  Tu Hijo y la  Escuela  Ken Robinson  Ccesa007.pdf
Tu, Tu Hijo y la Escuela Ken Robinson Ccesa007.pdf
 
Como hacer que te pasen cosas buenas MRE3 Ccesa007.pdf
Como hacer que te pasen cosas buenas  MRE3  Ccesa007.pdfComo hacer que te pasen cosas buenas  MRE3  Ccesa007.pdf
Como hacer que te pasen cosas buenas MRE3 Ccesa007.pdf
 
fichas descriptivas para primaria 2023-2024
fichas descriptivas para primaria 2023-2024fichas descriptivas para primaria 2023-2024
fichas descriptivas para primaria 2023-2024
 
PLANIFICACION PARA NIVEL INICIAL FEBRERO 2023
PLANIFICACION PARA NIVEL INICIAL FEBRERO 2023PLANIFICACION PARA NIVEL INICIAL FEBRERO 2023
PLANIFICACION PARA NIVEL INICIAL FEBRERO 2023
 
Recursos digitales para trabajar la educación literaria en el aula: abriendo ...
Recursos digitales para trabajar la educación literaria en el aula: abriendo ...Recursos digitales para trabajar la educación literaria en el aula: abriendo ...
Recursos digitales para trabajar la educación literaria en el aula: abriendo ...
 
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdfSEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
 
Semana 1 Derecho a interponer recursos y reparación.
Semana 1 Derecho a interponer recursos y reparación.Semana 1 Derecho a interponer recursos y reparación.
Semana 1 Derecho a interponer recursos y reparación.
 
Introducción a las herramientas de Google Apps (3 de julio de 2024)
Introducción a las herramientas de Google Apps (3 de julio de 2024)Introducción a las herramientas de Google Apps (3 de julio de 2024)
Introducción a las herramientas de Google Apps (3 de julio de 2024)
 
Escuelas Creativas Ken Robinson Ccesa007.pdf
Escuelas Creativas Ken Robinson   Ccesa007.pdfEscuelas Creativas Ken Robinson   Ccesa007.pdf
Escuelas Creativas Ken Robinson Ccesa007.pdf
 
PLAN ANUAL DE TRABAJO (PAT) 2024 MINEDU PERÚ
PLAN ANUAL DE TRABAJO (PAT) 2024 MINEDU PERÚPLAN ANUAL DE TRABAJO (PAT) 2024 MINEDU PERÚ
PLAN ANUAL DE TRABAJO (PAT) 2024 MINEDU PERÚ
 
ejemplos-del-servicio-cristiano-fiel (1).pptx
ejemplos-del-servicio-cristiano-fiel (1).pptxejemplos-del-servicio-cristiano-fiel (1).pptx
ejemplos-del-servicio-cristiano-fiel (1).pptx
 
Revista Universidad de Deusto - Número 155 / Año 2024
Revista Universidad de Deusto - Número 155 / Año 2024Revista Universidad de Deusto - Número 155 / Año 2024
Revista Universidad de Deusto - Número 155 / Año 2024
 
EJEMPLOS DE FLORA Y FAUNA DE LA COSTA PERUANA
EJEMPLOS DE FLORA Y FAUNA DE LA COSTA PERUANAEJEMPLOS DE FLORA Y FAUNA DE LA COSTA PERUANA
EJEMPLOS DE FLORA Y FAUNA DE LA COSTA PERUANA
 
2. LA ENERGIA Y TIPOSGRADO SEXTO.SANTA TERESApptx
2. LA ENERGIA Y TIPOSGRADO SEXTO.SANTA TERESApptx2. LA ENERGIA Y TIPOSGRADO SEXTO.SANTA TERESApptx
2. LA ENERGIA Y TIPOSGRADO SEXTO.SANTA TERESApptx
 
Introducción a la seguridad básica (3 de julio de 2024)
Introducción a la seguridad básica (3 de julio de 2024)Introducción a la seguridad básica (3 de julio de 2024)
Introducción a la seguridad básica (3 de julio de 2024)
 
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docxDiscurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docx
 
Cultura Organizacional con Responsabilidad Social Empresarial.pdf
Cultura Organizacional con Responsabilidad Social Empresarial.pdfCultura Organizacional con Responsabilidad Social Empresarial.pdf
Cultura Organizacional con Responsabilidad Social Empresarial.pdf
 
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
 

Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada

  • 1. CIS-IXB-001 UNIVERSIDAD NACIONAL DE LOJA ´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables Carrera de Ingenier´ıa en Sistemas Compiladores Cambia de Color a una Palabra Ingresada Tarea- Extra Clase Noveno B Autor: • Ra´ul Alexander G´omez Armijos • Fecha: 13/02/2015 Docente: Ing. Henry-Paz, Loja-Ecuador 2015 1
  • 2. ´Indice A. Problema del compilador a Desarrollar: 4 B. Aut´omata 4 C. Desarrollo del Compilador 4 1 . Crear el Analizador L´exico . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1 .1. Opciones y declaraciones . . . . . . . . . . . . . . . . . . . . . . . . 5 1 .2. C´odigo de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1 .3. Reglas lexicogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 . Crear la clase token . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3 . Generaci´on del Archivo L´exico . . . . . . . . . . . . . . . . . . . . . . . . . 7 4 . Crear el Analizador Sint´actico . . . . . . . . . . . . . . . . . . . . . . . . . 7 5 . Generar el Archivo Sint´actico . . . . . . . . . . . . . . . . . . . . . . . . . 9 6 . Integraci´on del Analizador L´exico y Sint´actico . . . . . . . . . . . . . . . . 9 7 . Control de Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 7 .1. Control de Errores del Analizador L´exico . . . . . . . . . . . . . . . 10 7 .2. Control de Errores del Analizador Sint´actico . . . . . . . . . . . . . 11 8 . Interfaz Gr´afica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 D. Anexos 17 E. BIBLIOGRAFIA 18 F. LICENCIA 19
  • 3. ´Indice de figuras 1. Aut´omata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Reglas Lexicogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Estructura de las Instrucciones del Analizador Sint´actico . . . . . . . . . . 8 4. Creaci´on de archivo.cup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5. Integraci´on del Analizador L´exico Sint´actico . . . . . . . . . . . . . . . . . 9 6. M´etodo Escribir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 7. Constructor del Analizador L´exico . . . . . . . . . . . . . . . . . . . . . . . 10 8. Mensajes para mejor Interpretaci´on con el Usuario . . . . . . . . . . . . . . 11 9. Constructor del Analizador Sint´actico . . . . . . . . . . . . . . . . . . . . . 11 10. Mensajes presentados al Usuario . . . . . . . . . . . . . . . . . . . . . . . . 11 11. Identifica el error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12. M´etodo report-fatal-error . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 13. Interfaz Gr´afica del Compilador . . . . . . . . . . . . . . . . . . . . . . . . 13 14. Funci´on que cumple cada Bot´on . . . . . . . . . . . . . . . . . . . . . . . . 14 15. Representaci´on de los Errores L´exicos . . . . . . . . . . . . . . . . . . . . . 15 16. Representaci´on de los Errores Sint´acticos . . . . . . . . . . . . . . . . . . . 16 3
  • 4. A. Problema del compilador a Desarrollar: Realizar un compilador que permita ingresar una cadena y que a dicha cadena ingre- sada se cambie de color, por un color seleccionado. Adem´as que contenga la estructura de un programa de la siguiente manera Inicio Color Seleccionado Cadena ingresada Fin B. Aut´omata Como se representa en la Figura 1. del aut´omata la estructura que va a llevar el compilador para su mejor entendimiento. Figura 1: Aut´omata C. Desarrollo del Compilador El compilador se lo desarrollara en c´odigo java haciendo uso de las librer´ıas de JFLEX y CUP por medio del IDE de desarrollo Netbeans. A continuaci´on detallaremos cada uno de los pasos a seguir para la creaci´on de dicho compilador. Nota: Para el desarrollo del presente proyecto se debe crear un proyecto nuevo de java en el IDE y luego importar las debidas librer´ıas (jflex y cup ); 4
  • 5. 1 . Crear el Analizador L´exico Para el desarrollo del Analizador l´exico se debe tener presente las tres partes impor- tantes por la que se encuentra conformado. Secci´on 1: Opciones y declaraciones Secci´on 2: C´odigo de usuario Secci´on 3: Reglas lexicogr´aficas 1 .1. Opciones y declaraciones La primera parte del archivo es el bloque donde se importaran los paquetes que se van a utilizar para nuestro analizador en nuestro caso importaremos las siguientes librer´ıas y escribimos el nombre del paquete correspondiente, donde la clase Symbol nos sirve para devolver un objeto del mismo tipo y poder obtener los valores correspondientes: package color; import java-cup.runtime.Symbol; Declaramos las directivas y Macros %class AnalizadorLexico %public %line %column %cup Donde especificamos que el nombre de la clase a generar se llamar´a AzalizadorLexico.java de tipo p´ublica y habilitamos %line y %column que nos permite obtener la l´ınea y la co- lumna de la posici´on actual del compilador y el %cup que nos permite la integraci´on con el archivo Cup. 1 .2. C´odigo de usuario En esta secci´on de declarar el c´odigo que se va a utilizar, pero en nuestro caso no lo utilizaremos, as´ı que pasamos a la reglas lexicogr´aficas. 1 .3. Reglas lexicogr´aficas La Figura 2 una parte esencial dentro del funcionamiento del analizador, en este se determinar´an el conjunto de expresiones regulares que se utilizar´an durante el proceso de an´alisis, a continuaci´on se detalla las declaraciones utilizadas: Donde las variables de Figura 2: Reglas Lexicogr´aficas 5
  • 6. SaltoLinea y espacios son declarados para despu´es ignorarlos en el analizador Sint´actico, ValorEntero y ValorTexto son el lenguaje que va a entender el compilador LUEGO DECLARAMOS LOS OPERADORES Y SIGNOS A UTILIZAR Donde cada una de ellas se encargan de retornar un nuevo objeto de tipo Symbol el mismo que se encuentra estructurado de un valor entero y objeto de tipo token para asignar la columna y l´ınea en la que se encuentra como adicional el valor del token correspondiente como se representa a continuaci´on. ”,”return new Symbol(sym.COMA, new token(yycolumn, yyline, yytext())); ”(”return new Symbol(sym.ABRIRPAR, new token(yycolumn, yyline, yytext())); ”)”return new Symbol(sym.CERRARPAR, new token(yycolumn, yyline, yytext())); SE DETALLA CADA UNA DE LAS PALABRAS RESERVADAS Donde cada una de ellas se encargan de retornar un nuevo objeto de tipo Symbol el mismo que se encuentra estructurado de un valor entero y objeto de tipo token para asignar la columna y l´ınea en la que se encuentra como adicional el valor del token correspondiente como se representa a continuaci´on. ((inicio¿”return new Symbol(sym.INICIO, new token(yycolumn, yyline, yytext())); ((/fin¿”return new Symbol(sym.FIN, new token(yycolumn, yyline, yytext())); ((cadena¿”return new Symbol(sym.CADENA, new token(yycolumn, yyline, yytext())); ((color¿”return new Symbol(sym.COLOR, new token(yycolumn, yyline, yytext())); Y AL FINAL LAS EXPRESIONES QUE IDENTIFICARA EL COMPILADOR donde de la misma manera retornamos un objeto de tipo Symbol correspondiente para cada valor donde recibe como par´ametro un valor entero y objeto de tipo token para asignar la columna y l´ınea en la que se encuentra como adicional el valor del token co- rrespondiente como se representa a continuaci´on. ValorTexto return new Symbol(sym.VALTEXT, new token(yycolumn, yyline, yytext())); ValorEntero return new Symbol(sym.VALINT, new token(yycolumn, yyline, yytext())); SaltoLinea return new Symbol(sym.ENTER, new token(yycolumn, yyline, yytext())); espacios /* ignorar */ /*esta ´ultima l´ınea se encarga de presentar el car´acter invalido ingresado como la l´ınea y la columna en la que se encuentre*/ . System.err.println(¸car´acter invalido- yytext() + ”[- yyline + ”:- yycolumn + ”]”); 6
  • 7. 2 . Crear la clase token Como se puede observar en la secci´on anterior se hace uso de una instancia de la clase token, la misma que me permite almacenar la columna , la l´ınea y el nombre del token establecido, para que de esta manera despu´es se pueda acceder a cada uno de estos atributos de la mejor manera y poder realizar las operaciones correspondientes. 3 . Generaci´on del Archivo L´exico Una vez establecido el analizador l´exico se procede a la ejecuci´on del mismo para que se genere la clase AnalizadorLexico.java de la siguiente manera. jflex.Main.generate(new File( ”src-File.separator+¸color- File.separator + ”Lexico.flex”)); donde jflex.Main.generate se importa de la librer´ıa JFlex el mismo que recibe como par´ametro el archivo Lexico.flex creado anterior mente . 4 . Crear el Analizador Sint´actico Una vez establecido el analizador l´exico procedemos a realizar el analizador Sint´actico el mismo que se encarga de estructurar el c´odigo y dar sentido a nuestras reglas l´exicas. Creamos un archivo con el nombre de Sintactico.cup en el cual escribiremos todo nuestro c´odigo del analizador Sem´antico. Definimos el nombre del paquete donde se va a generar nuestro AnalizadorSentacti- co.java y importamos las librer´ıas necesarias a utilizar en nuestro caso de la siguiente manera: package color; import java-cup.runtime.*; import java.util.ArrayList; im- port java.io.FileReader; Determinamos la secci´on del parser code : “c´odigo parser” : que contendr´a el c´odigo java utilizado en nuestro caso sobre escribimos los m´etodos para la captura de errores del compilador. public void syntax-error(Symbol sy) El mismo que determina si la sintaxis ingresada es la correcta. public void report-error(String message, Object info) Se encarga de dar un reporte de error en caso de ser encontrado public void report-fatal-error(String message, Object info) report-error(message, info); System.exit(1); Cuando se encuentra un error de donde el sistema no puede recuperarse, se lanza un error fatal. Donde se despliega el mensaje de error y se finaliza la ejecuci´on. por tal motivo, capturamos esa excepci´on y presentamos un mensaje identificando el tipo de error producido. 7
  • 8. En la secci´on del action code realizamos una instancia de la clase instrucci´on la misma que se la genera posteriormente, para guardar el tipo de instrucci´on a ejecutar (cadena,color). action code : ArrayList¡Instruccion¿instrucciones = new ArrayList(); : Terminales, tenemos dos tipos de terminales los que no tienen ning´un valor asociado y los escribimos en la primera l´ınea y los de la segunda l´ınea son los que tienen alg´un valor, como es el caso del valor entero para los colores y el valor del texto que hace referencia a la cadena. terminal COMA,ABRIRPAR,CERRARPAR,INICIO,FIN,ENTER,COLOR,CADENA; terminal token VALINT, VALTEXT; No terminales, de la misma manera que los terminales pero son aquellas variables que ser´an utilizadas para dar sentido y estructura al compilador non terminal instrucciones, programa; non terminal Instruccion instruccion,cadena,color; Estructura del compilador : start with programa; start with l´ınea de c´odigo que indica donde inicia la estructura del programa para despu´es desglosar su estructura de la siguiente manera. - programa ::= INICIO ENTER instrucciones ENTER FIN; Donde en programa indicamos que el compilador va a estar dado de cada uno de los tokens establecidos en la l´ınea anterior y Instrucciones donde se detalla en la Figura 3. Figura 3: Estructura de las Instrucciones del Analizador Sint´actico 8
  • 9. 5 . Generar el Archivo Sint´actico Una vez concluida la estructura del compilador procedemos a ejecutar el archivo.cup para que se genere el .java y poder utilizarlo, de la siguiente manera como se representa en la Figura 4: Creamos una clase en java y escribimos el siguiente c´odigo Figura 4: Creaci´on de archivo.cup Donde String opciones[ ] nos permite asignar las caracter´ısticas necesarias para la com- pilaci´on del archivo .cup, donde asignamos el paquete donde queremos que se genere el archivo java, el nombre conque deseamos que se genere en este caso AnalizadorSintac- tico.java y luego el paquete donde se encuentra el archivo .cup y su nombre respectivo Sintactico.cup y con java-cup.Main realizamos la generaci´on correspondiente de la clase AnalizadorSintactico.java y adem´as la clase sym que son generadas autom´aticamente. 6 . Integraci´on del Analizador L´exico y Sint´actico Una vez creados cada uno de los analizadores se procede a la integraci´on de los dos para dar sentido y estructura al compilador y final mente se procede realizar la estructura sem´antica del compilador: Integraci´on Figura 5: Integraci´on del Analizador L´exico Sint´actico 9
  • 10. M´etodo escribir() lo detallamos en la Figura 6 , EL mismo que me permite almacenar en un archivo .txt lo que ingresamos por pantalla; Figura 6: M´etodo Escribir 7 . Control de Errores Luego se configura el AnalizadorL´exico y el Analizador Sint´actico para la captura de Errores para definir la estructura sem´antica del compilador de la siguiente manera: 7 .1. Control de Errores del Analizador L´exico De tal manera que se configuro el constructor del analizador l´exico (ver Figura 7.) para poder enviar e interactuar con la interfaz gr´afica, donde se presenta y personaliza los errores l´exicos. Figura 7: Constructor del Analizador L´exico 10
  • 11. Luego se personalizo cada uno de los mensajes (ver Figura 8.) para una mejor inter- pretaci´on con el usuario e identifique que tipo de error se presenta, ingresando el valor adecuado de error (token) en la columna y l´ınea actual en la que se encuentra de la siguiente manera: Figura 8: Mensajes para mejor Interpretaci´on con el Usuario 7 .2. Control de Errores del Analizador Sint´actico Se configura los errores Sint´acticos para identificar si la sentencia ingresada se encuen- tra bien estructurada y poder enviar los errores correspondientes. Personalizando cada uno de ellos. (ver Figura 9.) Se Configura el constructor para la interacci´on con la vista y poder presentar los mensajes de errores Y a continuaci´on se personaliza los mensajes Figura 9: Constructor del Analizador Sint´actico para presentarlos al usuario y determinar que tipo de error hay que corregir, presentando por pantalla el error establecido como la l´ınea y la columna en la que se present´o dicho error y adicional identificando que error se produjo como se representa en la Figura 10 y Figura 11. Figura 10: Mensajes presentados al Usuario 11
  • 12. Figura 11: Identifica el error Adicional se comenta la linea de codigo System.exit(1) , (ver Figura 12); en el m´etodo report-fatal-error(String message, Object info) debido a que si no lo hacemos el compilador se cerrar´a repentina mente al encontrar un error. Figura 12: M´etodo report-fatal-error 12
  • 13. 8 . Interfaz Gr´afica Se realiza una interfaz gr´afica como se presenta en la figura 13 que me permita inter- actuar de la mejor manera con el usuario y poder obtener un resultado e interacci´on m´as eficiente. Figura 13: Interfaz Gr´afica del Compilador 13
  • 14. En la Figura 14: Representa el Funcionamiento de cada uno de los Botones del Com- pilador. Figura 14: Funci´on que cumple cada Bot´on 14
  • 15. En la Figura 15: Representa cada uno de los errores L´exicos indicando cuales Carac- teres pertenecen y cuales no a la sintaxis. Figura 15: Representaci´on de los Errores L´exicos 15
  • 16. Figura 16: Representa cada uno de los errores Sint´acticos que procesa el compilador. Figura 16: Representaci´on de los Errores Sint´acticos 16
  • 17. D. Anexos Para un mejor an´alisis y comprensi´on del compilador lo adjuntamos al proyecto java en el siguiente repositorio: https://ralexs04@bitbucket.org/ralexs04/compiladorcambiacolor. git 17
  • 18. E. BIBLIOGRAFIA Referencias [1] “Integraci´on del JFlex y Cup Rafael.” Rafael A. Vega [Octubre 2008] [2] “El Analizador L´exico, el Analizador Sintactico y los diferentes tipos de compiladores que hay.” S. Galvez. M Mora. [3] “Integraci´on del JFlex y Cup Rafael.” Luis Antonio. Farias Tello [17-01-2013] 18
  • 19. F. LICENCIA Ensayo by Ra´ul A . G´omez A. is licensed Under a Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 Unported License. 19