Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Manual de usuario Realizado por: José Francisco Jódar Reyes Dirigido por: Jorge Revelles Moreno Dpto. de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática Universidad de Granada
Manual de usuario MANUAL DE USUARIO Introducción 1 Manual de Instalación 1 Opciones Generales 1 Análisis Léxico 4 Generar Automata 5 Ver Automata 6 Analizar cadena 6 Análisis Sintáctico 9 Transformaciones Gramaticales 10 Generar Analizador Sintáctico 11 Ver Analizador Sintáctico 12 Analizar Texto 13 Método Descendente LL1 14 Método Ascendente Reduce/Desplaza 15 Método Ascendente por Precedencia de Operador 16 Método Ascendente por Precedencia Simple 17 Método Ascendente LR 18 Limitaciones 20 Proyecto Informático 2003/2004
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Proyecto Informático 2003/2004
Manual de usuario Introducción Esta aplicación ha sido desarrollada como herramienta para la enseñanza de ciertas técnicas de análisis léxico y sintáctico en la asignatura Procesadores de Lenguajes, impartida a la titulación de Ingeniería Informática por el Departamento de Lenguajes y Sistemas Informáticos de la Universidad de Granada. Debido a esta característica, es necesario tener unas ciertas nociones esta materia, para poder aprovechar las utilidades de este software. El propósito de éste manual es ofrecer una ayuda al futuro usuario de la aplicación. En él se exponen todas las posibilidades que ofrece la aplicación así como los pasos que hay que ejecutar para poder llevarlas a cabo. Manual de Instalación No es necesaria una instalación previa de software para poder ejecutar la aplicación. Únicamente es necesario tener instalado previamente en la máquina en la que se utilice el software la Maquina Virtual Java. El correcto funcionamiento del software ha sido probado con las versiones JDK 1.3.1 y JDK 1.4 Disponiendo de la maquina virtual, únicamente habrá que lanzar el programa ejecutando la línea: java jar Sefalas.jar sefalas.sefalas Opciones generales Tras haber lanzado el programa, el usuario tendrá a la vista la ventana principal del programa: Proyecto Informático 2003/2004 1
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Una vez lanzado, podrá inmediatamente empezar a trabajar con alguna gramática o especificación LEX. Además, existe la opción de cambiar la fuente de texto con la que trabajar. Para eso, existe el menú Opciones -> Fuente: Al pulsar este menú, se muestra un diálogo para elegir la fuente, el tamaño, etc Cuando el usuario esté trabajando con una gramatica que haya sido validada, tendrá disponible otra opción en el menú Opciones: Esta opción permitirá ver las producciones en forma compacta o no, es decir, agrupadas todas aquellas que tengan el mismo Simbolo no terminal en su parte izquierda: 2 Proyecto Informático 2003/2004
Manual de usuario Forma compacta Forma no compacta La última opción a comentar antes de pasar al análisis léxico, es el menú Ayuda -> Acerca de, que muestra el siguiente diálogo: Proyecto Informático 2003/2004 3
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Análisis Léxico Lo primero que se debe hacer para poder trabajar con las herramientas de análisis léxico, es introducir una especificación de analizador léxico con la sintaxis que utiliza LEX. Tras haberla introducido, se deberá validar la especificación, utilizando el menú EspecificaciónLEX -> Validar El resto de opciones de este menú son: Nueva: Abrir: Guardar: Cerrar: Editar: Validar: Cierra la especificación actual, y deja el sistema listo para introducir una nueva. Muestra un diálogo para abrir un fichero con una especificación LEX. Muestra un diálogo para guardar la especificación LEX en un fichero. Cierra la especificación actual. Esta opción se habilita una vez validada la especificación. Permite volver a editarla. Comprueba que la especificación introducida es correcta, y deja el sistema listo para comenzar a trabajar con ella. Descartar cambios: Esta opción se habilita cuando, después de haber habilitado una especificación, se vuelve a editar. Rechaza cualquier cambio que se hubiera realizado en ella. Salir: Cierra la aplicación. Una vez validada la especificación, se habilita el menú Análisis Léxico: 4 Proyecto Informático 2003/2004
Manual de usuario A continuación, se desarrolla cada una de las opciones: Generar Automata Al seleccionar esta opción, el sistema genera el Autómata Finito asociado a la especificación LEX, y lo muestra en pantalla, de la siguiente manera: En esta tabla, se puede ver los distintos estados del autómata y, frente a cada símbolo del alfabeto, el estado al que evoluciona. Nótese que ciertos estados estan remarcados. Estos estados son los estados finales del autómata, y el estado inicial siempre será el estado 0. Una característica de esta tabla es que, si se sitúa el puntero del ratón encima de un estado final, se muestra un texto emergente indicando el token reconocido por ese estado final: Proyecto Informático 2003/2004 5
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Ver Automata Este menú muestra nuevamente el autómata previamente generado. Si no hubiera sido generado, mostraría el siguiente mensaje: Analizar cadena Tras haber generado el autómata, podrá dar comienzo una traza de análisis léxico. Al seleccionar esta opción, el siguiente diálogo es mostrado: En este diálogo, el usuario deberá introducir el texto a ser analizado, y elegir si quiere que el autómata realiza el análisis con un símbolo de anticipación. Al pulsar Aceptar, da comienzo la traza del análisis: 6 Proyecto Informático 2003/2004
Manual de usuario En esta ventana se va mostrando la traza del análisis. En ella se puede ver la entrada (area de texto central), la cadena leída (area de texto izquierda), los tokens reconocidos (area de texto derecha), el estado actual en que se encuentra el autómata, y el autómata. De este modo, el usuario puede, de una forma visual, ver cómo el autómata va evolucionando conforme se realiza el análisis. Para facilitar aún mas el seguimiento del análisis, se resaltan algunos elementos en color. El significado de los colores es el siguiente: Cyan: Verde: Magenta: Rojo: Naranja: Estado actual en que se encuentra el autómata. Símbolo de entrada. Estado al que evolucionará el autómata tras leer el símbolo de entrada. Símbolo de anticipación. Estado al que llegaría a evolucionar el autómata tras leer el símbolo de anticipación. Conforme se va realizando el análisis, se introducen los tokens reconocidos en el area de texto de la derecha: Proyecto Informático 2003/2004 7
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes 8 Proyecto Informático 2003/2004
Manual de usuario Análisis Sintáctico Lo primero que se debe hacer para poder trabajar con las herramientas de análisis sintáctico, es introducir una gramática con la sintaxis que utiliza YACC. Tras haberla introducido, el usuario deberá validarla, utilizando el menú Gramática -> Validar El resto de opciones de este menú son: Nueva: Abrir: Guardar: Cerrar: Editar: Validar: Cierra la gramática, y deja el sistema listo para introducir una nueva. Muestra un diálogo para abrir un fichero con una gramática. Muestra un diálogo para guardar la gramática en un fichero. Cierra la gramática actual. Esta opción se habilita una vez validada la gramática. Permite volver a editarla. Comprueba que la gramática introducida es correcta, y deja el sistema listo para comenzar a trabajar con ella. Descartar cambios: Esta opción se habilita cuando, después de haber habilitado una gramática, se vuelve a editar. Rechaza cualquier cambio que se hubiera realizado en ella. Salir: Cierra la aplicación. Una vez validada la especificación, se habilita el menú Análisis Léxico: Proyecto Informático 2003/2004 9
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes La primera opción permite ver los conjuntos de los Iniciales y los Seguidores de los simbolos no terminales de la gramatica: Las tres siguientes permitirán al usuario realizar transformaciones a la gramática, las cuales veremos a continuación, así como el resto de las opciones. Transformaciones Gramaticales Las transformaciones que se pueden realizar a la gramática son tres: Factorización, eliminación de la recursividad a la izquierda y eliminación de la recursividad a la izquierda en mas de un paso. Al realizar cualquiera de estas tres opciones, se abrirá un diálogo en el que el usuario podrá elegir si quiere continuar trabajando con la gramática original, o con la gramática resultado de aplicar la transformación: 10 Proyecto Informático 2003/2004
Manual de usuario Generar Analizador Sintáctico Al seleccionar esta opción, el sistema dará a elegir al usuario qué analizador desea generar entre las distintas posibilidades: Una vez el analizador haya sido generado, se le mostrará al usuario la tabla de análisis. En caso de que hubiera conflictos, el usuario tendría que escoger las opciones apropiadas para resolver los conflictos. Proyecto Informático 2003/2004 11
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Ver Analizador Sintáctico Esta opción permite al usuario volver a ver la tabla de análisis de alguno de los analizadores que hayan sido generados. Si no se generó ninguno, muestra el siguiente mensaje: 12 Proyecto Informático 2003/2004
Manual de usuario Analizar Texto En cualquier momento se podrá realizar la traza del análisis sintáctico de un texto, tanto si ha sido generado algún analizador como si no (ya que siempre existirá la opción del análisis Reduce/Desplaza) Al seleccionar el análisis, el siguiente diálogo es mostrado: En este diálogo, el usuario deberá introducir el texto a ser analizado, y elegir el analizador con el que desea realizar la traza. Al pulsar Aceptar, da comienzo la traza del análisis. Cada analizador muestra una ventana distinta para la traza del análisis, y es por eso por lo que se verá a continuación, la ventana de análisis de cada estrategia por separado. Sin embargo, hay una característica común a todos ellos, excepto a la Precedencia de Operador, y es la posibilidad de mostrar el arbol de análisis y poder visualizarlo a medida que se realiza el análisis. Su aspecto es el siguiente: Proyecto Informático 2003/2004 13
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes El significado de los colores de los nodos es el siguiente: Verde: Gris: Amarillo: Naranja: Rojo: Nodos correspondientes a simbolos terminales de la cadena de entrada Nodos correspondientes a simbolos no terminales que han sido expandidos por una producción Nodos correspondientes a simbolos no terminales que han sido expandidos por una producción a cadena vacía Nodos correspondientes a simbolos no terminales que no han sido expandidos por ninguna producción (Análisis descendente LL1) Nodos correspondientes a simbolos no terminales que han sido expandidos por una producción de error (Análisis ascendente LR) Otra característica común a todos ellos, salvo para el método general reduce/desplaza, es la posibilidad de ver la tabla de análisis mientras se realiza la traza, para que de esa forma el usuario pueda observarla y analizar las distintas técnicas de análisis sintáctico. A continuación, se muestran las trazas de los análisis para los distintos analizadores: Método Descendente LL1 El aspecto de la ventana de análisis para este analizador es el siguiente: En ella se puede observar el símbolo en la cabecera de la pila marcado en cyan, ( primer símbolo de la entrada marcado en verde ( ). ) y el Del mismo modo, al visualizar la tabla de análisis, el usuario podrá ver los símbolos marcados en la tabla, lo que le facilitará el seguimiento de la traza: 14 Proyecto Informático 2003/2004
Manual de usuario Método Ascendente Reduce/Desplaza El aspecto de la ventana de análisis para este analizador es el siguiente: Cuando existan varias opciones para realizar (reducir o desplazar), el usuario deberá escoger una de las posibilidades para poder continuar el análisis: Proyecto Informático 2003/2004 15
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Método Ascendente por Precedencia de Operador El aspecto de la ventana de análisis para este analizador es el siguiente: Al igual que en el analizador LL1, y el resto de analizadores, en ella se puede observar el símbolo en la cabecera de la pila marcado en cyan, y el primer símbolo de la entrada marcado en verde. Además, se marca en naranja ( ) la precedencia entre los dos símbolos 16 Proyecto Informático 2003/2004
Manual de usuario Del mismo modo, al visualizar la tabla de análisis, el usuario podrá ver los símbolos, y la precedencia asociada, marcados en la tabla, con los mismos colores, lo que le facilitará el seguimiento de la traza: Método Ascendente por Precedencia Simple El aspecto de la ventana de análisis para este analizador es el siguiente: El significado de los colores para este analizador es el mismo que para el analizador por Precedencia de Operador, pero en Precedencia simple, además, cuando la precedencia sea >, es decir, haya que reducir, se marcará el pivote en rojo, y, junto a la precedencia se incluirá la producción a reducir, cuya parte derecha irá marcada igualmente en rojo: Proyecto Informático 2003/2004 17
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Método Ascendente LR Por último, tenemos la estrategia de análisis ascendente LR, lo cual incluye el analizador SLR, LR1 y LALR. El aspecto de las ventanas de análisis para estos analizadores es el siguiente: En ésta se marca en cyan el estado en la cabecera de la pila, y en verde el símbolo de entrada, al igual que en la tabla de análisis: 18 Proyecto Informático 2003/2004
Manual de usuario Además de esto, cuando la siguiente acción a aplicar sea una reducción, aparecen más colores: El objetivo de estos colores es que el usuario pueda ver, además de que la siguiente acción será una reducción, a qué estado evoluciona el análisis. En rojo está marcado, tanto en la ventana como en la tabla de análisis, la parte izquierda de la producción a reducir, y en magenta, el estado que quedará en el tope de la pila tras sacar de la pila los simbolos del pivote a reducir. De esta forma, el usuario podrá observar, en los GOTO de la tabla de análisis, el estado que quedará despues de la reducción en el tope de la pila: Proyecto Informático 2003/2004 19
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Limitaciones Como punto final de este manual, hay que indicar que con esta aplicación no es posible analizar cualquier cosa que el usuario quiera. Existen una serie de limitaciones impuestas a las especificaciones léxicas y sintácticas, y a las cadenas de entrada para el análisis sintáctico, que podrían impedir al usuario utilizar alguna especificación que no respete estas limitaciones. Estas limitaciones se enumeran a continuación, junto con posibles alternativas para que el usuario, pese a dichas limitaciones, pueda utilizar sus especificaciones con pequeños cambios que las conviertan en especificaciones equivalentes didácticamente. Especificación LEX No se reconocerán caracteres especiales ( \n, \t, etc..) Es posible introducirlos en las expresiones regulares, pero serán considerados como un conjunto de varios caracteres (p. ej, \n serán los cuatro caracteres, \, n y ), y al analizar una cadena con un carácter especial, ocurrirá un error de análisis. Como alternativa, aconsejamos al usuario, o bien utilizar algún carácter no utilizado en otra expresión regular en sustitución del carácter especial, o bien introducir los cuatro caracteres ( \n, \t, etc..) al introducir la cadena de entrada para el análisis léxico, en lugar del carácter especial (retorno de carro, tabulador, etc ). No se pueden introducir espacios en blanco en las expresiones regulares. Como alternativa, el usuario puede utilizar en sustitución del espacio en blanco algún carácter o caracteres que no sea utilizado en ninguna otra expresión regular (p. ej, _, ) 20 Proyecto Informático 2003/2004
Manual de usuario Análisis Sintáctico No se pueden introducir en la parte derecha de las producciones ninguno de los siguientes caracteres: ;, :, Como alternativa, se pueden defnir simbolos terminales para dichos caracteres (p. ej, puntocoma, dospuntos, barra) y utilizar estos tokens en lugar de dichos caracteres. Al realizar el análisis sintáctico, se deberán separar los tokens de la cadena de entrada por espacios en blanco (o tabuladores, o retornos de carro). Si no se hace así, se considerará como un único símbolo a analizar (p. ej, si introducimos id+id*id, se considerará un único simbolo, en lugar de considerar los tokens id, +, id, *, id ). Proyecto Informático 2003/2004 21