Skip to content

Ejecución

Antes de ejecutar el compilador, se modifica el fichero input.txt para así probar el analizador sintáctico generado:

c
DATA
    int width;

CODE
    width = 25 * (2 + 1);
    print width / 2;

Para probar el analizador sintáctico basta ahora con ejecutar la clase main.Main. La salida esperada es la siguiente:

bash
Compiler started.

Compiler finished.

El compilador está reconociendo la entrada como válida, ya que no ha notificado mensajes de error.

Se recomienda introducir cambios en el fichero input.txt para comprobar cómo el analizador detecta los programas que tengan errores sintácticos.

Traza del analizador sintáctico

Como se ha podido comprobar, el sintáctico se está comportando ahora mismo como una caja negra. Sólo se sabe si la entrada es válida o no, pero no cómo lo ha hecho.

Para saber el árbol sintáctico que se ha creado para la entrada, es decir, las transformaciones que se han aplicado para llegar desde el símbolo inicial de la gramática hasta la cadena de entrada, se puede utilizar la utilidad TestRig de Antlr. Para invocarla, hay preparado un fichero bat:

bash
c:\mlang> antlr_gui input.txt

Esto muestra el siguiente árbol de análisis sintáctico (árbol concreto):

alt

En caso de que la entrada no pertenezca al lenguaje, nos indica qué parte de la cadena no se corresponde con ninguna estructura del lenguaje. Supongamos, por ejemplo, que se omite el punto y coma de en la definición de la variable ancho:

c
DATA
	int width   // <-- Missing semicolon

CODE
    width = 25 * (2 + 1);
    print width / 2;

Si se ejecuta de nuevo el compilador, este detectará el error. Si, además, queremos tener más información de por qué la entrada es errónea, se puede usar de nuevo TestRig:

bash
c:\mlang> antlr_gui input.txt

alt