Una vez que se tiene una gramática en la zona de texto, se puede realizar el análisis de dicha gramática en el sistema.
Los análisis se pueden realizar desde el menú de análisis o desde los botones de análisis (estos se encuentran indicados en la Figura 12).
El primer paso para realizar cualquiera de los análisis que permite el sistema, es comprobar si la gramática está correctamente escrita en la zona de texto.
Para ello se seleccionará cualquiera de los análisis a realizar (desde el menú o desde los botones) y si aparece una nueva pestaña en la zona de análisis, la gramática estará bien formada.
En el caso de que contenga algún error, se mostrará el cuadro de diálogo que se puede ver en la siguiente figura (Figura 19) y no aparecerá una nueva pestaña en la zona de análisis.
Figura 19: Pantalla que indica que hay error en el análisis
Además en la zona de texto se resaltará la línea donde se encuentra el error.
Puede ser un error léxico, como se puede ver en la Figura 21, (falta una «r» en %start) o un error sintáctico (falta un «;» en la producción anterior) como se muestra en la Figura 20.
Una vez que se modifique la zona de texto desaparecerá la marca roja que resalta el error.
Figura 20: Pestaña con error sintáctico
Figura 21: Pestaña con error léxico
Una vez creado al análisis (LL1, SLR1, LR1 o LALR1), se tendrá una nueva pestaña en la zona de análisis. La aplicación indicará el archivo de entrada que generó dicho análisis (a través del título de la pestaña) y el tipo de análisis que es (colocando el ratón encima de la pestaña). Esto se puede ver en la siguiente figura (Figura 22).
Figura 22: Información del análisis en la pestaña
Para cerrar un análisis creado, se pulsará el botón de cierre que se ve en la figura anterior (Figura 22).
En la siguiente figura (Figura 23) se puede ver una pestaña de análisis.
Figura 23: Pestaña de análisis LL1.
En los siguientes apartados, se explicará detalladamente los componentes de una pestaña de análisis.
En la parte de arriba se encuentra el panel de control del análisis. Este panel se compone de lo siguiente:
Entrada a analizar: Se introducirá la entrada de la que se quiere realizar la simulación del análisis. Se deberán de introducir cada uno de los tókenes separados por un espacio. Una vez que se introduzca la entrada completa se puede pulsar la tecla INTRO para que comience el análisis.
Figura 24: Realizar el análisis de una entrada.
Enviar: En el caso de que no se haya pulsado INTRO tras introducir la entrada a analizar se pulsará enviar, para que comience el análisis. Si alguno de los tókenes introducidos en la entrada no pertenece a la gramática, se informará al usuario a través de la pantalla de la figura 25.
Figura 25: Realizar el análisis de una entrada.
Adelante: Realizará un paso hacia delante en la simulación.
Atrás: Realizará un paso hacia atrás en la simulación.
Reset: Resetea la simulación, y la comienza desde el principio conservando la entrada introducida.
Informe: Obtiene un informe del análisis. Esto se verá en la sección 2.4.4.
Dentro de la zona de análisis, en la parte izquierda se encuentra la zona donde se representará el árbol de análisis generado en la simulación.
Los componentes del árbol, se irán generando o eliminando a medida que se realizan los pasos en la simulación (se pulsa el botón adelante o atrás). Los terminales se representarán mediante elipses amarillas, mientras que los no terminales se representarán mediante un cuadrado con el fondo verde.
Figura 26: Pestaña con el panel de análisis.
En la parte derecha de las pestañas de análisis, se encuentra la zona donde se muestra el estado actual de la simulación de la entrada, para el análisis:
Tabla de análisis: Tabla de análisis sintáctico generada.
Pila de análisis: Estado de la pila en el análisis.
Entrada de análisis: Estado de la entrada del análisis.
Producciones de salida: Producciones emitidas en el análisis
Estado del análisis: Representa el estado del análisis a través de un código de colores.
Blanco: El análisis no ha finalizado.
Rojo: Hay error en el análisis para la entrada seleccionada.
Verde: El análisis ha finalizado para la entrada introducida.
En el caso de que el análisis generado sea ascendente (LR1, SLR1 o LALR1) la aplicación muestra el autómata generado por dicho análisis. En la siguiente figura (Figura 27) se muestra el autómata generado para un análisis SLR1.
Figura 27: Análisis SLR1.
En el autómata generado se muestran los conjuntos de configuración con sus elementos (ítems).
En la zona de análisis, también existen unos selectores de tamaño para modificar el tamaño de las zonas que lo componen. Así, se podrá ver la información que se necesite en cada momento de manera sencilla. Estos selectores se encuentran indicados en la figura anterior (Figura 25).
Una vez que se comienza la simulación para una entrada en un análisis, se pueden obtener dos resultados.
Si la entrada introducida pertenece al lenguaje generado por la gramática analizada, en el cuadro de estado de análisis se mostrará el color verde, como se puede ver en la figura 28.
Figura 28: Análisis correcto
En el caso de que la entrada introducida en la simulación no pertenezca al lenguaje generado por la gramática, se mostrará el color rojo en el cuadro de estado, como se puede ver en la figura 29.
Figura 29: Error en el análisis
También se obtendrán errores en el análisis de una entrada, si el análisis generado tiene alguna casilla con varios valores diferentes. Este problema, se vio en la memoria, cuando en los análisis ascendentes ocurrían errores (REDUCIR/REDUCIR) o (DESPLAZAR/REDUCIR). Estos conflictos indicarán que la gramática no es adecuada para el análisis seleccionado. En la figura 27 se mostró un análisis SLR1, que no es SLR1 porque genera un conflicto (REDUCIR/REDUCIR) por distinto estado. Esto se representa en la tabla de análisis en rojo, y mediante un menú desplegable se pueden ver los dos acciones en conflicto como se muestra en la siguiente figura (Figura 30).
Figura 30: Conflictos en el análisis.
En el caso de que al simular una entrada se tenga que utilizar una celda de la tabla de análisis con un conflicto, se mostrará el error en el análisis.
La aplicación puede generar un informe del análisis realizado en tres formatos. Dependiendo de la utilidad que se le vaya a dar, se utilizará uno u otro.
HTML: En el caso de que se quiera mostrar el informe en una página Web, es lo más adecuado.
RTF: En el caso de que se quiera modificar el contenido del informe para añadir otros datos, o modificar los datos actuales, es el formato más adecuado.
PDF: Es el caso más interesante. Genera un informe que no se puede modificar, que ocupa poco espacio, y se puede ver en cualquier sistema a través del Acrobat Reader. En estos informes se muestra una cabecera indicando la fecha de aplicación y un pie de página que indica el número de página y el número de páginas totales. En el apéndice E se muestran ejemplos de estos informes.
Dependiendo del tipo de análisis que se haya realizado se realizará un informe de análisis descendente (para el análisis LL1) o un informe de análisis ascendente (para el análisis SLR1, LR1 o LALR1).
En el análisis sintáctico descendente (LL1) se mostrará lo siguiente:
La gramática del análisis
El conjunto de terminales
El conjunto de no terminales
El símbolo de inicio
Las producciones de la gramática
El conjunto FIRST o iniciales
El conjunto FOLLOW o seguidores
La tabla de análisis sintáctico descendente.
En el caso de que se haya introducido una entrada para analizar, el resultado del análisis y el árbol de análisis generado.
En los análisis sintácticos ascendentes (SLR1, LR1 y LALR1) se mostrará lo siguiente:
La gramática del análisis.
La gramática ampliada.
El conjunto de terminales
El conjunto de no terminales
El símbolo de inicio
Las producciones de la gramática
El conjunto FIRST o iniciales
El conjunto FOLLOW o seguidores
La tabla de análisis sintáctico ascendente (tabla de ir_a y tabla de acción).
El autómata generado en el análisis.
En el caso de que se haya introducido una entrada para analizar, el resultado del análisis y el árbol de análisis generado.
Una vez que se generó un análisis se realiza el informe pulsando el botón informe del panel de control de análisis, como se vio en el capítulo 2.4.2.1.
Es importante observar el análisis realizado en la aplicación, para ver la estructura del autómata (si existe) y del árbol de análisis (si se ha realizado simulación), ya que la aplicación por defecto los mostrará en formato vertical pero se permite la opción de rotarlos para representarlos en formato vertical.
El primer paso es seleccionar el directorio donde se generarán los informes. Estos se almacenarán en la ubicación que se seleccione en la pantalla de la figura 31
Figura 31: Pantalla de selección de directorio donde se almacenan los informes.
En el caso de que el análisis sea ascendente (SLR1, LR1 o LALR1) se preguntará si se quiere rotar el autómata (para verlo en la página en formato horizontal) con la pantalla de la figura 32.
Figura 32: Pantalla que pregunta al usuario si quiere rotar el autómata.
En el caso de que se haya introducido una entrada a simular en el análisis (tanto ascendentes como descendentes) se preguntará si se desea rotar el árbol de análisis con la pantalla de la figura 33.
Figura 33: Pantalla que pregunta al usuario si quiere rotar el árbol de análisis.
En el caso de que los informes se hayan generado correctamente se mostraría la pantalla de la figura 34 donde se indica la ruta en la que se han creado los informes.
Figura 34: Pantalla que informa de la finalización de los análisis
En el caso de que los informes no se hayan podido generar, se mostraría la pantalla de la figura 35.
Figura 35: Pantalla que informa de que no se han generado los informes