PRACTICAS DE LEX

  1. 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>

  2. 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.

  1. 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.

  2. 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).

  3.  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).

  4. 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

  5. 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