Sie sind auf Seite 1von 40

INSTALACIN Y USO DE CUP

Lenguajes y Autmatas II

Presenta: Miguel ngel Pea Lpez Octubre del 2013

Qu es CUP?
Cup es un generador de analizadores sintcticos que recibe como entrada un archivo con la estructura de la gramtica de acuerdo a las reglas de declaracin y su salida es un parser escrito en Java listo para usarse.

Uso de CUP
Para hacer uso del generador de analizadores sintcticos CUP existen tres formas de hacerlo, dos de ellas son mediante la lnea de comandos y la otra es agregndolo a un IDE como por ejemplo eclipse o netbeans.

Instalacin 1
Descargar el archivo .zip de la pgina: http://www.cs.princeton.edu/~appel/modern/ja va/CUP/ Una vez descargado se debe extraer su contenido.

Entrar a la carpeta java_cup_v10k, copiar la carpeta java_cup a la carpeta bin del jdk.

Para ello debemos entrar a mi PC (equipo).

Entrar al disco C:

Guardamos la ruta porque se ocupar ms delante para crear las variables de entorno en caso que no existan. C:\Archivos de Programa\Java\jdk1.7.0_45\bin

Variables de entorno
Como siguiente paso, tenemos que crear nuestras variables de entorno, para que a la hora de compilar, nos encuentre el path del jdk.

Instalacin 2
Descargar los archivos java-cup-11a.jar y javacup-11a-runtime de la pgina: http://www2.cs.tum.edu/projects/cup/

Una vez descargados se deben copiar a la carpeta de trabajo donde guardaremos los archivos.cup que se van a compilar.

Instalacin 3 (integrar a NetBeans)


Descargar los archivos java-cup-11a.jar y java-cup-11a-runtime de la pgina: http://www2.cs.tum.edu/projects/cup/ Una vez descargados debemos agregarlos como libreras al proyecto que estemos trabajando.

Lo primero es abrir el NetBeans.

Ubicar el cursor en el proyecto al que vamos a agregar los .jar y dar clic derecho.

Despus dar clic en propiedades, lo cual nos abrir una nueva ventana.

Ya estando ah se debe seleccionar libreras.

A continuacin se da clic sobre el botn Add Jar/Folder.

Ahora buscamos la ubicacin de los .jar y una vez que los encontramos los seleccionamos ambos y en seguida aceptar.

Una vez hecho esto ya nos deben aparecer y presionamos OK.

Al salir de la ventana propiedades del proyecto en el explorador de proyectos ya aparecern los .jar agregados en el apartado libreras.

Estructura de un archivo CUP


Un archivo para Cup tiene la siguiente estructura: Especificacin del paquete e importaciones. Cdigo de usuario. Listas de smbolos. Asociatividad y precedencia. Gramtica.

Especificacin del paquete e importaciones


En esta seccin se agrega el nombre del paquete en el cual se est trabajando. Agregar las libreras como se trabajan comnmente en Java.

Cdigo de usuario
Si el desarrollador lo desea puede incluir un bloque java dentro de la clase parser.java mediante la declaracin: action code {: bloque_java :} Tambin es posible realizar declaraciones Java dentro de la clase parser mediante la declaracin: parser code {: bloque_java :} lo cual es muy til para incluir el mtodo main().

Cdigo de usuario
Las siguientes declaraciones son para realizar la comunicacin con el analizador lxico. La primera ejecuta el cdigo indicado justo antes de realizar la solicitud del primer token : init with {: bloque_java :} Cup puede comunicarse con cualquier analizador lxico mediante: scan with {: bloque_java :}

Listas de smbolos
En este apartado se enumeran todos los terminales y no terminales de la gramtica. No deben repetirse. Declaracin de terminales. terminal terminal1, terminal2, etc; Declaracin de no terminales. non terminal noterminal1, noterminal2, etc;

Asociatividad y precedencia
precedence left terminal1, terminal2, etc.; opta por reducir en vez de desplazar al encontrarse un conflicto en el que el siguiente token es terminal1 o terminal2, etc.

Asociatividad y precedencia
precedence right terminal1, terminal2, etc.; opta por desplazar en los mismos casos

Asociatividad y precedencia
precedence nonassoc terminal1, terminal2, etc.; Producira un error sintctico en caso de encontrarse con un conflicto desplazar/reducir en tiempo de anlisis.

Asociatividad y precedencia
precedence nonassoc terminal1, terminal2, etc.; Producira un error sintctico en caso de encontrarse con un conflicto desplazar/reducir en tiempo de anlisis.

Gramtica
En esta seccin se escribir la gramtica que tiene la siguiente sintaxis:
<non terminal > ::= < terminales o No terminales > ;

Como un no terminal puede tener mas de un lado derecho en Cup se utiliza el simbolo |
<non terminal > ::= < terminales o No terminales > |<terminales o No terminales>

Opciones al momento de compilar


Existen varias opciones que permiten modificar rutas, nombre de archivos de salida al momento de compilar un archivo.cup. -parser name. Establece el nombre el fichero de salida (parser.java). -symbols name. Establece el nombre el fichero de salida (sym.java).

Opciones al momento de compilar


-destdir direction. Establece la direccin donde se almacenarn los archivos (parser.java, sym.java) que se generarn al compilar el .cup.

Compilacin1 (lnea de comandos)


Primeramente se debe abrir la lnea de comandos. Navegar hasta el directorio donde se encuentra el archivo.cup con el comando cd. Ejecutar alguna de las siguientes instrucciones: java java_cup.Main opciones fichero.cup java java_cup.Main fichero.cup

El proceso anterior nos arroja como resultado las estadsticas de la compilacin (errores, advertencias, nmero de terminales, nmero de no terminales, etc), si no tenemos errores nos generar dos archivos .java que sern nuestro analizador sintctico.

Compilacin 2 (lnea de comandos)


Abrir la lnea de comandos. Despus navegamos hasta el directorio de trabajo con el comando cd. Ejecutar alguna de las instrucciones:
java jar java-cup-11a.jar opciones archivo.cup java jar java-cup-11a.jar archivo.cup

Compilacin 3 (con NetBeans)


Crear una nueva clase que contenga:

Una vez teniendo todos los atributos necesarios en el arreglo de tipo String se debe ejecutar el archivo y automticamente generar los archivos parser.java y sym.java.

EJEMPLO

Das könnte Ihnen auch gefallen