Laboratorio de integración JFlex y CUP

2
Universidad Tecnológica Centroamericana Ingeniería de Sistemas Computacionales Compiladores 1 Ing. Egdares Futch H. Laboratorio #1 Introducción a JFlex y CUP Duración estimada: 1 hora Esta práctica está dedicada a introducirse a las herramientas que usaremos en los cursos de Compiladores 1 y 2, especialmente JFlex y CUP. Los objetivos de ésta práctica son: Hacer la instalacion básica de JFlex y CUP Hacer la prueba mínima de JFlex y CUP para validar la instalación Crear un proyecto básico de JFlex y CUP intgrado a Eclipse Para hacer esta práctica se asume que previamente se ha instalado el Software Development Kit (SDK) de Java 1.4. No se incluyen las instrucciones en este documento para esta actividad. Consulte http://java.sun.com para referencia. Deberá tomar notas detalladas de los resultados obtenidos en cada paso, ya que debe entregar un informe de laboratorio. Materiales requeridos Un CD con herramientas e información Un computador equipado con Windows XP, 512 MB de memoria RAM y al menos 128 MB libres de espacio en disco Entorno Java instalado A) Instalación básica de JFlex y CUP 1. Crear un nuevo directorio, llamado c:\compiladores o algo similar, que denominaremos para esta práctica con el nombre COMPILER_HOME. Este será el directorio básico de programación. Dentro de este directorio, crear los subdirectorios COMPILER_HOME\src y COMPILER_HOME\src\minimal. Baje dentro de éste último directorio los archivos del Example: CUP / JLex interoperability” que se encuentra en la sección de Examples/Documentation de la página de CUP: http://www2.cs.tum.edu/projects/cup . Deberá tener al final los archivos minimal.lex y minimal.cup dentro del directorio referido, así como un README. 2. Extraiga los contenidos del archivo http://maestros.unitec.edu/~efutch/jflex-cup.zip al directorio COMPILER_HOME que creó anteriormente. Deberá tener dos directorios nuevos: JFlex y java_cup.

description

Laboratorio para Compiladores 1, detallando los pasos de integración entre JFlex y CUP, para validar su funcionalidad.

Transcript of Laboratorio de integración JFlex y CUP

Universidad Tecnológica Centroamericana Ingeniería de Sistemas Computacionales Compiladores 1 Ing. Egdares Futch H.

Laboratorio #1 Introducción a JFlex y CUP Duración estimada: 1 hora

Esta práctica está dedicada a introducirse a las herramientas que usaremos en los cursos de Compiladores 1 y 2, especialmente JFlex y CUP. Los objetivos de ésta práctica son:

• Hacer la instalacion básica de JFlex y CUP • Hacer la prueba mínima de JFlex y CUP para validar la instalación • Crear un proyecto básico de JFlex y CUP intgrado a Eclipse

Para hacer esta práctica se asume que previamente se ha instalado el Software Development Kit (SDK) de Java 1.4. No se incluyen las instrucciones en este documento para esta actividad. Consulte http://java.sun.com para referencia. Deberá tomar notas detalladas de los resultados obtenidos en cada paso, ya que debe entregar un informe de laboratorio. Materiales requeridos

• Un CD con herramientas e información • Un computador equipado con Windows XP, 512 MB de memoria RAM y al menos 128

MB libres de espacio en disco • Entorno Java instalado

A) Instalación básica de JFlex y CUP

1. Crear un nuevo directorio, llamado c:\compiladores o algo similar, que denominaremos para esta práctica con el nombre COMPILER_HOME. Este será el directorio básico de programación.

Dentro de este directorio, crear los subdirectorios COMPILER_HOME\src y COMPILER_HOME\src\minimal. Baje dentro de éste último directorio los archivos del “Example: CUP / JLex interoperability” que se encuentra en la sección de Examples/Documentation de la página de CUP: http://www2.cs.tum.edu/projects/cup. Deberá tener al final los archivos minimal.lex y minimal.cup dentro del directorio referido, así como un README.

2. Extraiga los contenidos del archivo http://maestros.unitec.edu/~efutch/jflex-cup.zip al

directorio COMPILER_HOME que creó anteriormente. Deberá tener dos directorios nuevos: JFlex y java_cup.

3. Abra una ventana de línea de comandos (CMD.EXE), y vaya al directorio COMPILER_HOME. Verifique y edite los contenidos de los archivos disponibles en COMPILER_HOME\start.bat y COMPILER_HOME\JFlex\bin\jflex.bat para adecuarlos a su instalación.

4. Regrese a COMPILER_HOME y ejecute el comando start_compiladores.bat dentro del

shell que abrió previamente. Esto le cargará las variables de ambiente a la sesión, para poder ejecutar el resto.

5. Compile CUP. Cambiar al directorio COMPILER_HOME\java_cup y ejecutar la línea

javac java_cup/*.java java_cup/runtime/*.java. Dependiendo de su computador, esto puede tomar unos minutos.

6. Cambiese al directorio COMPILER_HOME\src\minimal, y genere un analizador léxico

por medio de JFlex por medio del comando jflex minimal.lex. Esto le generará un archivo llamando Yylex.java.

7. Genere el analizador sintáctico por medio del comando java java_cup.Main

minimal.cup. Esto le generará los archivos parser.java y sym.java.

8. Compile el ejemplo por medio del comando javac -d . parser.java sym.java Yylex.java.

9. Si no han habido problemas hasta este momento, ya cuenta con el ejemplo completo.

Pruebe su demo ejecutando el comando java -classpath .:$CLASSPATH Example.parser. Este ejemplo acepta inputs de tipo: 1+2; 1*2*3; 5 * (3+2); y puede llevar cualquier cantidad de whitespace entre cada token. Requiere un punto y coma al final de cada operación para desplegar el resultado. Pruébelo con diversos inputs para ver la reacción.

10. Modifique ahora el archivo minimal.lex para que acepte únicamente números menores a

64, generando un mensaje de error apropiado. Recompile desde el paso 6. Es importante que lea los manuales de JFLex que se adjuntan en el directorio de documentación.

11. Modifique ahora el archivo minimal.lex para que presente el resultado cuando se presione

<ENTER> en vez de punto y coma. Recompile desde el paso 6. Es importante que lea los manuales de JFLex que se adjuntan en el directorio de documentación.

Entregables

1. Una entrada en su blog, válida como la de esta semana, contando acerca de los resultados obtenidos y problemas al hacer este laboratorio. Comentar también acerca del uso de Java y otras tecnologías nuevas (IDE o similares) que no habían tenido la oportunidad de utilizar, e incluir un informe detallando los resultados obtenidos.