Sunteți pe pagina 1din 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.
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.

S-ar putea să vă placă și