Está en la página 1de 2

Sobre la practica croff.

c:
El programa lee de la entrada hasta que no se le pasa un fin de fichero. Una
vez que se le pasa, debe ver opciones de marcado. Si hay texto no se impone
ningna restriccin as que se obvia.
Las etiquetas de marcado son Xpipe, Xif, Xerr y Xout.
Xpipe comando
linea
linea
linea
Xendpipe
en este caso se ejecuta el comando y las lneas entre las marcas se substituyen por
la salida de este comando.
Xif comando
lineas
lineas
lineas
Xendif
solo se escriben las lneas entre las marcas si el comando tiene xito.
Xout comando. se substituye por la salida del comando.
xerr comando se substituye por la salida de error del comando.
ademas si en el texto se incluyen palabras con $palabra se deber sustituir la
palabra por la variable de entorno.
La manera de proceder es leer lnea por lnea y en el momento que se detecte una
marca, partir el problema, es decir, si se detecta la marca Xif por ejemplo, se ejecuta
el comando y si tiene xito entonces se van leyendo lneas (una a una, e
imprimindolas por la salida estandar hasta dar con la de Xendif. (que tambin se
lee pero no se escribe). Despus continuamos con el bucle principal. buscando el fin
de fichero o marcas de otro tipo. Las marcas deben estar aisladas unas de otras.

Primero creo un pipeto que me devuelve la entrada al pile y la salida sea la entrada
estndar del hijo y cuando ejecute el hijo no tiene nada mas que ir leyendo lneas de
la entrada e ir imprimindolas por la salida.
Cada vez que leo una linea por la entrada la proceso. Esto es: si es una marca leo el
comando, creo un hijo que lo ejecute y dependiendo de la marca se procede de
forma distinta. Cada vez que proceso una linea la escribo por la entrada del pipe.

Comprobar si los comandos son pipermines: Pues primero debe de ser una marca.
Luego busco en funcin de | (la linea no la tokenizada). y compruebo que se pueda
hacer si no, ya se ver. Despus: el pipeline depender su entrada de la marca. Si
es Xpipe, la entrada corresponder a las lneas entre las marcas y por tanto tendr
que ir leyndolas y enchufandoselas al pipe que cree, al mismo tiempo debo ir
apuntando el numero de lineas que hay para luego imprimir la salida del comando
tantas veces como lneas (esto es: escribir en el pipe principal).

También podría gustarte