Vous êtes sur la page 1sur 5

METACOMPILADOR DIDCTICO GENERADOR DE CDIGO JAVA

Erick Leonel Rico Preciado1, Ana Cristina Bueno Campos1, Jos Gerardo Carpio Flores2, Ruth Sez
de Nanclares Rodrguez2, Martha Alicia Rocha Snchez2

Resumen

Palabras Clave

Compiladores, Teora de la Computacin, IDE, Ingeniara de Software, Lenguaje.

__________________________
1

Ingeniera en Sistemas Computacionales, Instituto Tecnolgico de Len, Av. Tecnolgico s/n, Fracc. Industrial Julin de
Obregn, C.P. 37280, Guanajuato, Len, Telfono (477) 710 5200.
2 Instituto Tecnolgico de Len, Departamento de Sistemas y Computacin, Av. Tecnolgico s/n, Fracc. Industrial Julin de Obregn, C.P.
37280, Guanajuato, Len, Telfono (477) 710 5200 ; Fax: 711-2072; gcarpio@ymail.com , r.saezdenanclares@yahoo.com.mx ,
martaalicia.rocha@itl.edu.mx

Vol. 1 no. 1, Verano de la Investigacin Cientfica, 2014

La investigacin se enfoca en la construccin de un metacompilador, el cual es una herramienta especializada en el


rea de compiladores, en la categora de gramticas LL(1), siendo una investigacin de desarrollo tecnolgico, as
como en el diseo de un lenguaje de programacin. El metacompilador ser utilizado de manera prctica y como caso
de estudio en la imparticin de la asignatura de Lenguajes y Autmatas II, perteneciente al plan de estudios de la
carrera de Ingeniera en Sistemas Computacionales. El metacompilador es un software generador de analizadores
sintcticos escritos en lenguaje java, que incluye un ambiente de desarrollo integrado, as como un mdulo de deteccin
de errores, y la generacin de cdigo java.

333

INTRODUCCIN

Los compiladores son fundamentales en la computacin, actan como traductores, transforman los lenguajes
de programacin orientados a los humanos en lenguajes orientados al computador (Lemone, 1999). Para la
mayora de los usuarios, un compilador es visto como una caja negra que realiza la siguiente transformacin
(ver Figura 1):

Figura 1. Proceso de Compilacin

Anlisis Lxico: Reconoce componentes lxicos (tokens).


Anlisis Sintctico: Verifica mediante estructuras de datos que la secuencia de tokens se apegue a la
definicin del lenguaje.
Anlisis Semntico: Mediante un rbol de anlisis gramatical, se verifica que la entrada sea lgicamente
correcta.
Optimizacin: Procura que la generacin de cdigo se ejecute ms rpido y ocupe menos espacio.
Generacin de Cdigo: seleccin de secuencias de instrucciones adecuadas para obtener cdigo
legible.

El trmino metacompilador se refiere a un programa de computadora que recibe como entrada las
especificaciones del lenguaje para el que se desea obtener un compilador, y genera como salida el compilador
para ese lenguaje. El desarrollo de los metacompiladores se encuentra con la dificultad de unir las dos fases de
atencin en la compilacin de programas: la fase de anlisis y la fase de sntesis, que es la generacin de
cdigo (Tremblay, 1985).
Las gramticas de contexto libre son tiles como mecanismos definicionales. Son usadas con frecuencia para
usar parsers. (Aho, 2008)La idea es construir un generador de parsers que tome como entrada una clase de
gramtica y produzca como salida un parser que analice correctamente el lenguaje definido por la gramtica.
Este concepto es el de un compilador con definiciones de alto nivel que se traduce a formas ejecutables tambin
de alto nivel. La facilidad que una herramienta de estas caractersticas aporta para modificar gramticas y tener
un analizador en forma automtica es formidable desde el punto de vista didctico.
Los modelos educativos actuales requieren del aprendizaje centrado en el alumno, por lo cual el desarrollo del
metacompilador auxiliar al alumno en la comprensin de la teora de autmatas y lenguajes formales. La

Vol. 1 no. 1, Verano de la Investigacin Cientfica, 2014

Un compilador permite que la mayora de los usuarios de computadoras ignoren los detalles del lenguaje
mquina; los compiladores permiten que los programas y los programadores sean independientes de la
plataforma computacional que ejecutar el cdigo. El trmino compilador fue inventado a inicios de la dcada
de los 50s por Grace Murray Hopper. La traduccin fue vista como la compilacin de una secuencia de
subprogramas seleccionados de una biblioteca. La compilacin fue llamada programacin automtica por la
respuesta a la ejecucin de cdigo. Entre los primeros compiladores reales, estn los compiladores de
FORTRAN de finales de los 50s. Uno de los primeros compiladores de FORTRAN tomo 18 aos hombre en su
construccin (Lemone, 1999). El proceso de traduccin puede describirse como una secuencia de fases
seriadas que se describen a continuacin (Aho, 2008):

334

herramienta se enfoca en la enseanza a travs de la implementacin computacional de los conceptos, y as el


alumno no deje de lado la programacin de software de base.

MATERIALES Y MTODOS
El metacompilador realiza una traduccin dirigida por sintaxis (parsing), as mismo se ha programado bajo el
paradigma orientado a objetos del lenguaje Java, utilizando como herramienta de software el entorno integrado
de desarrollo NetBeans. El desarrollo se realiz bajo la siguiente metodologa:
Actualizacin Terico-Prctica
Es necesario repasar algunos conceptos previos como:

Actualizacin de los conocimientos tericos necesarios para desarrollar el meta compilador.


Desarrollo de la revisin tcnica que permita conocer en dnde se encuentra en este momento la
frontera del conocimiento en desarrollo y la aplicacin de meta compiladores en el estudio y desarrollo
de software de base.
Comprender el uso y construccin de los meta compiladores ms utilizados actualmente.
Analizar los Ambientes de Desarrollo Integrados ms populares en este momento.

Para la parte de implementacin, se desarroll las siguientes partes que componen al metacompilador:
Desarrollo de las especificaciones lxicas y sintcticas que deber observar el usuario final del
metacompilador.
Eleccin de los algoritmos apropiados para el desarrollo de un traductor que utilice gramticas Libres
de contexto y Drivers LL(1).
Desarrollo e implementacin de los algoritmos elegidos.
Eleccin de las estrategias de generacin de cdigo ms adecuadas y accesibles para el tipo de
traductor que nos proponemos desarrollar.
Codificacin de los algoritmos requeridos para la generacin de cdigo objeto.
Eleccin de las funcionalidades que el IDE debe ofrecer a los usuarios finales.
Desarrollo de los algoritmos necesarios para implantar las funcionales del IDE.
Codificacin de algoritmos para la el IDE.
Correccin y Pruebas
Testeo de los algoritmos desarrollados, anlisis y correccin de errores, tales como:

Verificacin del funcionamiento del analizador lxico-sintctico.


Pruebas con diversas gramticas de contexto libre elegidas.
Pruebas de rendimiento y deteccin de errores para el IDE.
Pruebas de integracin entre el metacompilador y el IDE.

Vol. 1 no. 1, Verano de la Investigacin Cientfica, 2014

Implementacin Computacional

335

RESULTADOS Y DISCUSIN
Se ha creado un lenguaje de programacin nombrado MCD, que define una estructura genrica que le indica
al usuario como es que debe escribir sus gramticas, en la figura 2 se muestra un Subset de Pascal de la
manera en la que se desea sea introducida por el usuario (ver Figura 2).

Figura 2.Gramatica Subset de Pascal

Figura 3. Ejecucin de clculo first,

follow y matriz predictiva del


Subset de Pascal.

La implementacin del algoritmo del LLDriver, es la parte fundamental del metacompilador, ya que mediante l
se verifica que la entrada proporcionada por el usuario, contenga la estructura definida por el lenguaje, se ha
agregado el mdulo de deteccin de errores para auxiliar al LLDriver en su funcin, adems de reportar al

Vol. 1 no. 1, Verano de la Investigacin Cientfica, 2014

Implementacin de un autmata genrico capaz de tokenizar una entrada cualquiera, siendo este la parte
primordial del analizador lxico, as como la implantacin computacional de los algoritmos first, follow para
obtener finalmente la matriz predictiva automticamente, siendo parte esencial para el correcto funcionamiento
del LLDriver, en la figura 3 se puede observar una corrida con la gramtica subset de Pascal, mostrando la
generacin automtica de los algoritmos antes mencionados (ver Figura 3).

336

usuario los tokens en los que se encuentran dichos errores y la capacidad de continuar con la ejecucin y
encontrar otros posibles errores (ver Figura 4).

Figura 4 Reporte de errores

En la segunda fase de la investigacin se dise de la interfaz del entorno de desarrollo, as mismo se


establecieron las funcionalidades bsicas para una primera integracin con el metacompilador. Obteniendo
como resultado una herramienta en versin beta, estable, de funcionalidad bsica (ver Figura 5).

CONCLUSIONES

Durante el proceso de desarrollo del metacompilador, se considera que existen dos aportaciones
sobresalientes. La primera de ellas es la creacin de un lenguaje de programacin que se acoplara a las
necesidades de la herramienta. La segunda, es el diseo y creacin de un entorno de desarrollo integrado, ya
que la mayora de herramientas similares, no cuentan con un IDE, por lo que el contar con un IDE, har el
proceso educativo ms sencillo y prctico.

REFERENCIAS
Libro:
Aho Alfred V., Sethi Ravi, Lam Monica S., Ullman Jeffrey D., Compiladores principios, tcnicas y herramientas, Edit. Pearson Addison Wesley,
Segunda Edicin 2008.
Lemone Karen A., Fundamentos de Compiladores, como traducir al lenguaje de computadora, Editorial CECSA, 1999.
Tremblay Jean-Paul, Sorenson Paul G., The Theory and Practice of Compiler Writing, McGrawHil 1985.

Vol. 1 no. 1, Verano de la Investigacin Cientfica, 2014

Figura 5. Entorno de Desarrollo Integrado

337

Vous aimerez peut-être aussi