Portada
SOFTWARE DE GENERACIÓN
Y SIMULACIÓN DE TABLAS DE ANÁLISIS SINTÁCTICO
(BURGRAM)
Dirigido por: Dr. César
Ignacio García Osorio
Realizado por: Carlos Gómez
Palacios
Burgos, Enero de 2008
En esta
página web se presenta un software de apoyo a la docencia de
los algoritmos de análisis sintáctico, en concreto, implementa los siguientes: LL(1), SLR(1),
LALR(1) y LR(1). Además de la documentación de usuario
para dicho software se presenta una pequeña introducción
teórica de los algoritmos. El software y la documentación
asociado son fruto del trabajo realizado por el alumno Carlos Gómez
Palacios en la realización del trabajo para la asignatura
Sistemas Informáticos de la Ingeniería en Informática
de la Escuela Politécnica Superior de la Universidad de
Burgos.
El
objetivo original de este proyecto era crear una herramienta para ver
y simular los diferentes tipos de análisis sintáctico
existentes (Ascendente y descendente) que se
ven en la asignatura de 4º de Ingeniería
Informática de Procesadores de Lenguaje. Se intento crear una
herramienta que sirviera de apoyo tanto al profesor como al alumno a
la hora de trabajar la asignatura.
El inicio
del proyecto, surgió cuando en el curso 2005-2006, estudié
la asignatura. Me pareció que sería muy útil
tener una herramienta para poder realizar los ejercicios que se
estudiaban en la asignatura. Existía alguna aplicación
como Anagra [ANAGRA 2004] pero había cosas muy importantes que
no hacía correctamente, con lo que los ejercicios quedaban
incompletos ya que alguna parte no mostraba los resultados esperados.
Fue por eso, que propuse a César García Osorio este
proyecto: “Una herramienta que permitiera ver y simular el
análisis sintáctico de las gramáticas”.
César accedió a ser mi tutor, y fue así como
surgió este proyecto.
Comencé
creando un conjunto de clases robusto para poder trabajar
correctamente con las gramáticas que más tarde
generarían los algoritmos. Una vez conseguido este conjunto de
clases, creé un conjunto de clases para poder realizar los
algoritmos, mostrando los resultados en modo texto. Al crear estos
algoritmos tuve especial cuidado en desacoplarlo por completo de la
aplicación gráfica. De esta manera con este conjunto de
clases se puede trabajar directamente desde un applet, una interface
gráfica de usuario (de aquí en adelante GUI Graphical
User Interface), o una aplicación externa. Por último
creé la aplicación gráfica (GUI) con la que el
usuario interactuará para obtener los resultados que se
necesiten. Se intentó crear una aplicación lo más
intuitiva y sencilla posible, con unos objetivos muy claros:
Sencillez:
una interfaz lo más sencilla posible de manera que el usuario se
familiarice rápidamente con la aplicación.
Múltiples
opciones: a pesar de intentar hacer una aplicación
sencilla, que a la vez proporcione la mayor versatilidad posible.
Ayuda a
la docencia: Dado que es una herramienta de ayuda a la docencia,
se ha intentado plasmar gráficamente los conocimientos
teóricos de la teoría. Por ejemplo el gráfico
con las flechas y los componentes que se utilizan en la simulación,
pretende representar gráficamente los componentes necesarios
para realizar el análisis.
MultiPestaña:
En la actualidad las aplicaciones con pestañas (Tabs) están
siendo cada vez más utilizadas. El navegador Firefox [MOZILLA
2002] es un ejemplo claro: en una única pantalla se pueden ver
todas las páginas que el usuario necesite. Dado el éxito
de las pestañas en FireFox, Microsoft ha incluido las pestañas
en su última versión del navegador Internet Explorer
(7.0). Es por esto que se ha querido aportar la ventaja de las
pestañas a este proyecto.
Editor
“inteligente”: Un editor “inteligente”
que de al usuario información adicional: (la gramática
ha sido modificada, la gramática ha sido almacenada, en que
línea están los errores en el parseo
si estos existen...)
Generación
de informes: Me ha parecido muy importante poder generar un
informe con todos los datos que el sistema genera en un informe. De
esta manera el usuario puede realizar los ejercicios una vez delante
del ordenador y sacar un informe con todos los datos que la
herramienta genera, y poder llevarlos a clase para preguntar dudas al
profesor, o el profesor lo puede utilizar para colgar ejercicios en
la página web de la asignatura…. Estos informes
dependiendo del uso que se vayan a dar es conveniente que estén
en un formato o en otro, por eso se generan los informes en tres
formatos (PDF, HTML, RTF).
Reutilización:
Los componentes utilizados en el proyecto se han pensando para poder
utilizarlos en otras aplicaciones.
Este
proyecto pretende abarcar los algoritmos de análisis
sintáctico estudiados en clase, resolviéndolos de forma
sencilla y comprensible por el usuario, para ello la GUI mostrará
paso a paso su resolución. La meta no es resolver el problema
únicamente, sino que el usuario vea además cual es la
forma de hacerlo, para de esta forma asistirle en el proceso de
estudiar y entender los algoritmos.
Para
realizar este proyecto he desarrollado la aplicación
utilizando el paradigma Orientado a Objetos (OO), a través
del lenguaje de programación Java en su versión
1.5.
Para la
construcción de los gráficos que se muestran en la GUI
se ha empleado la herramienta DOT [GRAPHVIZ 2004] mediante el
paquete Grappa [GRAPPA 2001] que permite utilizarlo en Java.
Para la
generación de los informes se ha empleado el paquete IText
[ITEXT 2008] de Java. Este paquete está orientado a crear de
manera sencilla informes en pdf, pero además se permite crear
informes en otros tipos de formatos.
La
aplicación ha quedado completamente probada utilizando pruebas
unitarias (con JUnit [JUNIT 2008] y pruebas de cobertura (con
Cobertura [COBERTURA 2008]. Finalmente
se ha medido su calidad a través de JDepend
[JDEPEND 2008]
|