Menú Análisis
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).
LL1, SLR1, LR1 y LALR1
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á bin formada.
En el caso
de que contenga algún error, se mostrará el cuadro de
dialogo 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
Simulación del análisis
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.
Panel de control
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 tokens 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 tokens 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.
Árbol de análisis
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.
Estado de la simulación
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.
Autómata generado:
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).
Resultado de la simulación
Una vez
que se comienza la simulación para una entrada en un análisis,
se pueden obtener dos resultados.
Análisis correcto
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 pude ver
en la figura 28.

Figura
28: Análisis correcto
Error en el análisis
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.
Generar informe
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).
Informe de análisis
descendente
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.
Informes de análisis
ascendente
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.
Generación del análisis
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
|