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]