VAST. Nuevo diseño y funcionalidades. Evaluación educativa

AutorFrancisco J. Almeida-Martínez
Cargo del AutorUniversidad Rey Juan Carlos
Páginas155-169

Page 155

1 Introducción

Tradicionalmente asignaturas como Procesadores del Lenguaje o Compiladores se consideran como una de las más complejas en las titulaciones de Ingeniería Informática.

La complejidad del diseño de analizadores ha disminuido gracias a las herramientas de generación automática de traductores, como la pareja Lex y Yacc. Estas herramientas están orientadas a un uso profesional lo que puede dificultar el aprendizaje de los alumnos.

La fase de análisis léxico está muy ligada con la teoría subyacente y a las herramientas de generación automática correspondientes. Sin embargo, en el caso del análisis sintáctico esta relación parece cercana. Existen conceptos en la asignatura cuya interpretación en este tipo de herramientas es muy complicado, pues o necesita de un experto (tablas acción e ir-a) o bien simplemente no los implementan (Árbol sintáctico).

En este trabajo presentamos VAST, una herramienta educativa que permite la visualización del proceso de compilación independientemente de la herramienta de generación utilizada. A diferencia de las herramientas utilizadas normalmente, VAST ha sido evaluado tanto de forma educativa como en usabilidad.

El resto de la comunicación se estructura como sigue. En la sección 2 se describen los trabajos relacionados, donde se muestran diferentes herramientas que visualizan el proceso de compilación. En la sección 3 se describe VAST y en la sección 4 se muestra su funcionamiento. En la sección 5 se describe la evaluación de usabilidad realizada a la herramienta. A continuación, en la sección 6 se detallan las conclusiones y finalmente en la sección 7 se describen las líneas de trabajo futuras.

Page 156

2 Trabajos relacionados

La utilización de herramientas de generación automática generalmente facilita la tarea de construcción de compiladores y/o analizadores. Sin embargo, como ya se ha dicho anteriormente, al utilizar este tipo de herramientas no existe una relación directa entre la teoría y la práctica.

Existen herramientas que intentan cubrir el hueco existente entre la teoría y la práctica utilizando visualizaciones para mejorar el proceso de aprendizaje [1]. Estas herramientas se pueden dividir entre aquellas que tienen un enfoque eminentemente teórico y aquellas que están enfocadas a una utilización principalmente práctica.

En un extremo encontramos herramientas educativas como JFLAP [2], THOTH [4], BURGRAM [5] o SEFALAS [3]. Éstas representan una opción válida a nivel de fundamentos teóricos, además su diseño persigue objetivos específicamente pedagógicos. Sin embargo, este tipo de herramientas no permiten que los alumnos generen sus propios analizadores, lo que impide que se puedan utilizar en un entorno de desarrollo.

En el otro extremo, tenemos herramientas que muestran el proceso de reconocimiento con un enfoque más práctico. Hemos encontrado nueve herramientas de este tipo. ICOMP [6], VISICLANG [7], APA [8] y TREE-VIEWER [9], no permiten generar analizadores, pero las visualizaciones tienen un enfoque práctico. Por otro lado, VCOCO [10] permite la generación de analizadores pero las visualizaciones que genera están orientadas a usos en un entorno profesional.

Por último, GYACC [11], CUPV [12], LISA [13] y ANTLRWorks [14] presentan visualizaciones más elaboradas, permitiendo además la generación de analizadores. Sin embargo, normalmente estas herramientas visualizan un determinado aspecto del proceso de compilación, por lo que ofrecen una solución parcial. Además, todas están fuertemente ligadas a una herramienta de generación automática. Esto hace que dependan de una plataforma en concreto, ofreciendo así una solución muy particular.

En este contexto, cuando se desea obtener una vista de un aspecto del proceso de compilación que no muestra la herramienta con la que se trabaja, se debe cambiar tanto de herramienta de generación como de herramienta de visualización. Hay que tener en cuenta que tanto profesores como alumnos deben adaptarse a trabajar con las diferentes herramientas, y el esfuerzo que ello conlleva.

Por lo tanto, nuestros esfuerzos se centraran en crear una herramienta que ofrezca el mayor numero de vistas del proceso de compilación y que además dependa lo menos posible de la herramienta de generación utilizada. De esta forma, se podrían crear visualizaciones con una sintaxis común, independientemente de la herramienta de generación utilizada.

3 VAST

VAST es una herramienta educativa para la visualización del proceso de compilación. Al igual que muchas de las herramientas existentes, VAST requiere de una herramienta generadora para crear las visualizaciones. Sin embargo, no se requiere ningún generador en particular y además ofrece el mayor número de vistas posible del proceso de compilación. Además, VAST es compatible tanto con analizadores LL como con analizadores LR.

Las visualizaciones creadas por VAST se centran en el análisis sintáctico. Partiendo de la visualización del árbol sintáctico, se sincronizan las demás vistas. En relación con el análisis léxico se muestra el procesamiento de la cadena de entrada. En lo referente al análisis sintáctico

Page 157

se muestra el árbol sintáctico, la pila del analizador y la gramática indicando qué regla se ha utilizado en cada momento.

Para mejorar la interacción con el usuario, estas visualizaciones van acompañadas de diferentes funcionalidades como zoom, vista global, explicaciones textuales, etc.

3. 1 Aspectos de implementación

El desarrollo de VAST ha sido incremental (aún no ha concluido), manteniendo siempre la idea de crear una herramienta genérica y además fácil de usar. Para lograr la generalidad se ha optado por un diseño que permite realizar una separación funcional. De esta forma VAST, se ha dividido internamente en dos partes: VASTapi y VASTview.

VASTapi es la parte encargada del procesamiento del lenguaje y como tal debe comunicarse con las herramientas de generación automática. VASTview es un visualizador que permite mostrar las diferentes vistas del proceso de compilación.

Esta separación funcional permite mejorar el proceso de desarrollo de VAST y también facilitar su manejo.

3. 2 VASTapi

VASTapi se encarga del procesamiento del lenguaje, es decir, debe interpretar las acciones realizadas por los analizadores. El resultado de su ejecución es una representación intermedia en XML con el contenido del árbol sintáctico. La facilidad de generación de animaciones de VAST radica en la facilidad de uso de VASTapi, por ello VASTapi ofrece un número reducido de métodos.

Para transmitir a VASTapi las acciones realizadas es necesario anotar la especificación léxica y sintáctica, utilizando para ello los métodos de su API. La anotación léxica es necesaria ya que se requiere la información sobre el lexema reconocido y su posición en la cadena de entrada. Por otro lado, la anotación sintáctica es necesaria ya que informa sobre qué reglas sintácticas se han ejecutado y en última instancia crear el árbol sintáctico.

Como VAST es compatible con los analizadores LL y LR, VASTapi debe distinguir qué tipo de analizador se está utilizando en cada momento. En la Figura 1 se muestra un ejemplo de anotación sintáctica, en la que sólo se requiere informar qué regla se ha ejecutado.

[VER PDF ADJUNTO]

Fig 1. Especificación de la anotación sintáctica

Page 158

3. 3 VASTview

VASTview es la parte responsable de crear la representación visual a partir de la representación intermedia en XML generada por VASTapi. Asimismo, VASTview se encarga de producir todas las vistas del proceso de compilación que ofrece VAST.

Además de generar la representación visual, VASTview se encarga de los aspectos de configuración de VAST, convirtiéndose así, en una parte esencial para el manejo global de la herramienta.

4 Trabajando con VAST

La creación de visualizaciones con VAST se puede dividir en diferentes etapas: diseño, ejecución y visualización.

En tiempo de diseño el usuario debe implementar la especificación del analizador correspondiente. Además, debe anotar las especificaciones léxicas y sintácticas utilizando los métodos que ofrece VASTapi. La última tarea de esta fase correspondería a la generación del analizador utilizando la herramienta de generación automática deseada.

Una vez que se ha generado el analizador, se pasa a tiempo de ejecución. En esta etapa el usuario debe proporcionar una cadena de entrada válida para el analizador creado. Al ejecutarse el analizador, también lo hacen las llamadas incluidas a VASTapi, generándose así la representación intermedia en XML del árbol sintáctico.

Por último, se pasa a la etapa de...

Para continuar leyendo

Solicita tu prueba

VLEX utiliza cookies de inicio de sesión para aportarte una mejor experiencia de navegación. Si haces click en 'Aceptar' o continúas navegando por esta web consideramos que aceptas nuestra política de cookies. ACEPTAR