PRACTICAS DE LEX
Diseñar un programa en lex que elimine los caracteres blancos del final de cada línea del texto de entrada y reduzca a un blanco cualquier grupo de blancos del interior de cada línea. (Se entiende por blanco el espacio en blanco y el carácter de tabulación). Ejemplo:
Este es un texto <EOL>
con varios blancos <EOL>
<EOF>
Este es un texto<EOL>
con varios varios<EOL>
Compilar y ejecutar el siguiente programa lex con la entrada que se indica
%%
can printf("perro");
un fidalgo con un can
canta en el amanecer;
el can aulla a su vez.
can y hombre, hombre y can,
pecan a mi parecer,
pues lo hacen bastante mal
(estan haciendo el gamberro).
Modificar el programa de forma que cambie solamente los “canes” que parece razonable que modifique.
Lex por defecto, emite los caracteres que no ha emparejado con ningún patrón. Modificar el programa anterior para que muestre un símbolo, (una “p”, por ejemplo) por cada aparición de la palabra ``can'' aislada en el texto fuente, pero sin rescribir el texto de entrada.
Elaborar un programa en lex que copie el archivo de entrada en uno de salida, añadiendo 3 a todo numero positivo que sea múltiplo de 7.(Indicación: considerar la función atof() de C que transforma una cadena de caracteres en su valor real).
Elaborar un programa en lex que cuente el numero de palabras del texto de entrada que contengan alguna vez la letra $. (NOTA: se puede hacer con cualquier otra letra, dados los problemas que puede provocar la $ según en que sistemas).
Elaborar un programa en lex que de forma a un texto fuente justificando las líneas a una longitud (L) dada como parámetro, de manera que si una línea es mas larga que L, se pasen las ultimas palabras a la siguiente línea ajustando los espacios, y si es mas corta, se añadan espacios completar L, pero de forma que la línea acabe con una palabra y con un espacio (salvo que la línea contenga una sola palabra). Si alguna palabra es mas larga que L, se permitirá que la linea sea más larga. Por ejemplo si L=11 y la entrada es: "Nabucodonosorcito tiene mucha sed". Su salida seria:
Nabucodonosorcito
tiene mucha
sed
Modificar el programa anterior para que en el caso de que la línea sea corta que L, se añadan palabras de la siguiente línea, salvo que la línea termine con un punto. Por ejemplo:
entrada --
un fidalgo con
un can
canta en el
amanecer;
el can aulla a
su vez.
can y hombre,
hombre y can,
pecan a mi
parecer,
pues lo hacen
bastante mal
(estan haciendo
el gamberro).
salida --
un fidalgo con
un can canta en
el amanecer; el
can aulla a su
vez.
can y hombre,
pecan a mi
parecer, pues
lo hacen
bastante mal
(estan haciendo
el gamberro).
LIMITE DE ENTREGA (voluntaria) antes del examen de la convocatoria ordinaria de la asignatura por correo electrónico a:
teodoro@infor.uva.es