miércoles, 23 de febrero de 2011

Integrar java-cup y JFlex a netbeans

Hace ya mas de un año, para compiladores1 conoci por primera vez las herramientas "jlex" y "cup" para generar analizadores a partir de especificaciones,despues de un rato de estar usando estas herraientas, me desespere por lo tedioso que era estar ejecutando los comandos para llamarlas desde la consola, y posterior a esto , colocar en los directorios apropiados del proyecto los archivos .java obtenidos.Por esta razon, se me ocurrio que debia existir una forma de agilizar este proceso , y la solucion que encontre en ese momento fue crear scripts (.bat en windows y .sh en linux), que con solo darles doble click ejecutaban las llamadas a jlex y cup, y copiaban los archivos generados a sus respectivas carpetas.Este metodo funciona, pero aun se debe estar ejecutando los scripts por separado a la compilacion de nuestro ide, como me desespero rapido inmagine que debia haber una forma de automatizar esto de estar ejecutando los scrips a mano. Y asi fue como conoci a "ant" , que es una herramienta parecida a make para hacer "builds" de proyectos de una manera relativamente sencilla ya que hace uso de archivos xml para especificar las acciones y el orden de las mismas , y como netbeans maneja a "ant" por defecto , es posible que uno defina que hara el ide al darle "build"(construir, generar e incluso ejecutar),con tan solo modificar el archivo build.xml.

Ya conociendo esto , en compiladores 2, hice que "ant" ejecutara los scripts antes mencionados, pero resulta que hay una manera mejor de realizar esto,debido a que jflex(una version moderla de jlex), y cup tienen compatibilidad directa con "ant" por lo cual es mucho mas facil y eficiente integrar directamente estas herramientas al ide,logrando con esto , que automaticamente se ejecute la generacion de analizadores al momento de darle un "build" a nuestro proyecto con el ide, sin necesidad de crear complicados scripts. A continuacion adjunto el archivo build.xml que estoy usando para mi proyecto de compiladores 2(en mi segunda oportunidad en el curso,donde se debe crear un interprete para  4 lenguajes(c,basic,python ,y ruby) que se comunican entre si , y generan figuras en  3d). El archivo adjunto , ademas de realizar los procesos de compilacion mencionados, crea varias copias del proyecto en algunos directorios de back up, ya que no queria que me volviera a pasar lo mismo que me paso al llevar compiladores 1, un fallo en la particion donde tenia mi proyecto , causo que perdiera mis avances, a menos de 2 dias de la entrega final, quede paraonoico y pensando que volveria a pasar, por eso crea copias en varios directorios lo cual para algunos es exagerado,pero el archivo puede ser modificado segun la necseaida de quien lo vea.

Lo unico que hay que hacer, es agregar al directorio  "carpeta de instalacion de netbeans\java\ant\lib" los .jar de JFlex y JavaCup respectivamente.

Link de Descarga