Ejecución
Antes de ejecutar el compilador, se modifica el fichero input.txt para así probar el analizador sintáctico generado:
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:
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:
c:\mlang> antlr_gui input.txt
Esto muestra el siguiente árbol de análisis sintáctico (árbol concreto):
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:
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:
c:\mlang> antlr_gui input.txt