JavaCUP - Generación del Parser

Generación del Parser

Una vez escritas las especificaciones léxica y sintáctica, en dos archivos .lex y .cup, respectivamente, para generar el parser deben seguirse una serie de pasos, que más abajo se representan mediante un diagrama. Dichos pasos son los siguientes:

1. Ejecutar JLex teniendo como entrada el archivo que contiene la especificación léxica del lenguaje para generar el analizador léxico:

java JLex.Main <nombre_archivo>.lex

2. Renombrar el archivo generado como Yylex:

move <nombre_archivo>.lex.java Yylex.java

3. Ejecutar JCup teniendo como entrada el archivo que contiene la especificación sintáctica del lenguaje para generar el parser:

java java_cup.Main < <nombre_archivo>.cup

4. Ejecutar javac teniendo como entrada el parser, el archivo de constantes y el analizador léxico:

java -d . parser.java sym.java Yylex.java

5. Ejecutar el parser, indicando el paquete en el que se incluye:

java <package>.parser

Una vez ejecutado el parser, debe ingesarse en la línea de comandos la expresión que se desea parsear y luego, para indicar fin de la entrada, debe ingresarse la combinación Ctrl+z, siempre que el caracter de terminación de las expresiones del lenguaje sea EOF.

En adición al archivo de la especificación, el comportamiento de CUP puede modificarse mediante algunas opciones de personalización que se documentan en Main.java.

El funcionamiento general de CUP puede representarse mediante el siguiente diagrama: