Que es lo mismo que Flex pero para java, porque a mí no me gusta C.
Todos deben saber para qué sirve, creo yo...
Primero, descargamos la última versión disponible, a la fecha de publicación es la 1.4.3.
http://jflex.de/jflex-1.4.3.zip
Dentro del programa tiene instrucciones de instalación, pero como nunca les entendí, así que les enseñaré a integrarlo a eclipse.
En eclipse, creamos un proyecto nuevo, luego seleccionamos java project y le ponen el nombre que quieran, yo le puse JFlex
Ahora le dan clic a la carpeta del proyecto para que les salga la carpeta de src, ahí le dan clic derecho, luego new y luego File.
A ese archivo le ponen el nombre que quieran pero tiene que terminar con flex, yo le puse Lexer.flex, pueden dejarlo vacío, este archivo será la especificación léxica con la que trabajará nuestro JFlex..
Ahora crearán otro archivo, pero este se llamará entrada.txt, o lo que quieran ponerle de nombre, a diferencia del Lexer.flex que pusimos en src, el archivo entrada.txt lo haremos en la carpeta principal, es decir, ahora daremos clic derecho en JFlex en vez de en src.
El nuevo archivo debe aparecer debajo de JRE System Library.
Ahora tienen que irse al menú de eclipse, donde dice RUN, luego External Tools, y luego External Tools Configuration.
Seleccionan donde dice Program, luego le dan click derecho y le dan NEW
En nombre le dan el nombre que quieran, yo le puse JFlex.
En location, vamos a poner la ruta hasta el archivo de java.exe, denle browse file system, y luego ya saben, nuestra querida carpeta del JDK, luego a bin y ahí lo buscan.
En working directory le ponen browse Workspace, luego le dan a JFlex [así se llama mi proyecto] luego a src y aceptar, tiene que salir algo como esto: ${workspace_loc:/JFlex/src} [o si quieren copien y peguen y nomás le cambian JFlex por como le pusieron ustedes.
En los argumentos le ponen:
-cp C:\Users\Jass\Documents\Escuela\Compiladores\jflex-1.4.3\lib\JFlex.jar JFlex.Main -nobak Lexer.flex
Sustituyendo obviamente su carpeta para que coincida a donde descomprimieron el zip que bajaron al principio.
Ahora vayan a la pestaña de Refresh y seleccionen la opción de "Refresh resources upon completion"
Y seleccionan The entire Workspace.
También pongan palomita en Recursively include subfolders.
Y listo, denle Apply y cierren la ventana, si le dan run va a tirar error porque nuestro archivo no tiene nada.
Ahora vamos a probar que funcione.
Rellenen el archivo con lo siguiente...
/*Aquí van los import*/
%%
%standalone
DIGITOS = [0-9]
/*Aquí van las especificaciones de Tokens*/
%%
/*Aquí van las acciones al encontrar tokens*/
{DIGITOS} {System.out.println("Digito");}
Denle a donde está el botoncito de compilar, pero el que tiene una cajita de herramientas de color rojo, es el de la derecha, ahí tiene una flechita, denle y debe salir JFlex.
Si hicieron todo bien, debería generarse una clase llamada Yylex.java en su default package.
Ahora, váyanse a la pestaña Run de eclipse de nuevo, pero esta vez seleccionaremos la opción de Run Configurations, sale una ventana, denle donde dice Java Application y busquen la clase YyLex y selecciónenla, ahora a la derecha hay pestañas, váyanse donde dice Arguments y en el cuadro pónganle entrada.txt y denle Apply, ahora sí, denle RUN.
Si no tira errores, ya está bien configurado.
De ahora en adelante simplemente editaremos el archivo de entrada.txt o el de Lexer.flex, dentro del mismo eclipse te permite hacerlo.
Para probarlo, editen el archivo de entrada.txt y póngale números y espacios y cosas...
Ya que lo editan, le dan al botón de compilar [el rojito] y luego a compilar el normal, y les debería aparecer "Digito" "Digito" y así, si le pusieron otras cosas al archivo, se imprimirán tal cual ya que lo que JFlex no reconoce, lo imprime en pantalla.
Yo sé que al manual le faltan imágenes y cosas así...
Yo saqué esta información de este enlace:
http://www.lsi.us.es/docencia/get.php?id=5840
Así que dense una vuelta, usan una versión diferente de eclipse, pero no deberia ser problema ajustar las cosas con lo que expliqué anteriormente.
¡Saludos!
Gracias me sirvio
ResponderEliminarQué bueno que te sirviera, saludos y gracias por tu visita y comentario!
EliminarHola, una pregunta usted sabe qué error pudo generar esto
ResponderEliminarSorry, couldn't open "Lexer.flex"
1 error, 0 warnings.
Después de compilar con JFlex en archivo entrada.txt?