You are on page 1of 4

Grado en Ingeniera Informtica

Procesadores de lenguajes - Anlisis lxico Jflex


Hoja de problemas
Objetivos de la prctica
Conocer el funcionamiento de los generadores de analizadores lxicos.
Saber construir traductores lxicos utilizando la herramienta JFlex
(http://jflex.de/).

Actividades a realizar
1.
2.
3.
4.

Instalacin JFlex
Uso de JFlex
Probar ejemplo en JFlex
Ejercicios de traductores lxicos

1. Instalacin de JFlex en modo interactivo


Para instalar JFlex hay que completar los siguientes pasos:
1. Descargar la herramienta del campus virtual o de la web:
http://www.jflex.de/download.html
2. Descomprimir el fichero descargado en un directorio conocido y accesible.
3. Para ejecutar JFlex de forma interactiva basta con ejecutar el fichero
JFlex.jar descargado.

2. Uso de JFlex
Para utilizar JFlex hay que dar los siguientes pasos:
1. Editar en un fichero de texto la especificacin lxica. Resultado: fichero .flex
2. Pedir a JFlex que genere el traductor. Resultado: fichero .java
3. Compilar el programa generado por JFlex. Resultado: fichero .class
4. Ejecutar el programa proporcionndole un fichero de entrada apropiado para la
ejecucin.

3. Ejemplo de traductor
El siguiente traductor genera una lista de token reconocidos de la forma < token >.
Donde token puede ser:
1. Numero entero: ristra de dgitos decimales.
2. Nmero real: dos ristras de dgitos decimales separadas por un punto ..
El cdigo de la especificacin JFlex es la siguiente:
%%
%standalone
%%
[0-9]+.[0-9]+
[0-9]+

{System.out.println("<Real>");}
{System.out.println("<Natural>");}

Se guarda este cdigo en un fichero de texto llamado prueba0.flex.


Se ejecuta JFlex.jar y se selecciona el fichero anterior para la generacin.
Como resultado se habr creado Yylex.java
Compilar este fichero: javac Yylex.java
Crear un fichero de texto de prueba pr0-0.txt para ejecutar con nmeros
naturales y reales en coma fija.
6. Ejecutar el fichero .class compilado: java Yylex pr0-0.txt
7. Comprobar que la salida es la correcta.
1.
2.
3.
4.
5.

Es recomendable leer el manual de la herramienta: http://jflex.de/manual.html

3. Ejercicios de traductores lxicos


Disear una especificacin JFlex que:
1. Dado un fichero de texto de entrada, cambie todas las letras minsculas por
maysculas.
2. Dado un fichero de texto de entrada lo procese de la siguiente forma:
a. Si al comienzo de la lnea se encuentra una m, cambiar todas las letras
maysculas por minsculas.
b. Si al comienzo de la lnea se encuentra una M, cambiar todas las
letras minsculas por maysculas.
c. En otro caso deja la lnea como est.
3. Dado un fichero de texto de entrada obtenga las siguientes estadsticas:
a. Nmero total de caracteres utilizados (excepto espacios en blanco),
palabras (ristras de letras), frases (terminadas con un .) y prrafos
(terminados con una lnea en blanco).
b. Nmero de medio de: caracteres por palabra, palabras por frase y frases
por prrafo.
4. Dado un fichero de texto de entrada con letras maysculas y minsculas, signos
de puntuacin y saltos de lnea, codifique cada palabra utilizando el siguiente
cdigo:
a. Si la palabra termina en vocal, se cambian todas sus letras por la letra
anterior en el alfabeto.
b. Si la palabra termina en consonante, se cambian todas sus letras por la
letra posterior en el alfabeto.
c. El resto de smbolos se dejan igual.
d. NOTA: despus de la z se entiende que va la a. Se recomienda usar
la clase Carcter de Java.
5. Dado un fichero de texto de entrada, genere el mismo fichero con las lneas
numeradas:
Primera lnea
Segunda lnea
Cuarta lnea, la 3 est vaca

1:Primera lnea
2:Segunda lnea
3:
4:Cuarta lnea, la 3 est vaca

6. Dado un fichero donde hay constantes numricas en las siguientes bases:


Binaria: b seguido de una ristra de dgitos binarios.
Octal: x seguido de una ristra de dgitos octales.
Decimal: ristra de dgitos decimales) y
Hexadecimal: 0x seguido de una ristra de dgitos hexadedimales).
Donde las constantes numricas pueden ser enteras o reales con signo opcional. Las
constantes reales se pueden expresar en formato de punto fijo o coma flotante. A
continuacin se muestran algunos ejemplos.
binaria
octal
decimal hexadecimal
-b011
+x56
098
-0x34A5
Entero
b01.11
x54.01
-83.91
+0xff.A4
Real punto fijo
0x.4Ae+FF
Real coma flotante +b.001e-111 x.74e230 +.54e-4
NOTAS:
Como funciones de conversin slo se permite usar las de las clases
Character e Integer.
Los dgitos hexadecimales no numricos son siempre letras maysculas.
El exponente de las constantes reales en coma flotante se empieza siempre
con e.
Se pide devolver los tokens correspondientes: <token, valore numrico en base
decimal>
7. Realice el ejercicio anterior suponiendo que slo nos interesan aquellas
constantes numricas que se encuentran dentro de comentarios, de lnea (// ) o
multilnea (/* */)

You might also like