/*************************************************************************************************************************************/
/* */
/* M I S E S U R U N E S E U L E L I G N E D E S C H A I N E S D E C A R A C T E R E S */
/* E N T R E L E S A P O S T R O P H E S E T L E S Q U O T E S */
/* A I N S I Q U E L E S A N T I - Q U O T E S : */
/* */
/* */
/* Author of '$xcg/recolle.01$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1994??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R F A C E ' listG ' : */
/* */
/* */
/* :Debut_listG: */
/* :Fin_listG: */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
@define PRAGMA_CL_____PAS_DE_LIBRAIRIES_DYNAMIQUES
/* Ceci a ete introduit le 20030208114756 a cause de 'v $xcc/cpp$Z 20021212145057'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F I C H I E R S D ' I N C L U D E S : */
/* */
/*************************************************************************************************************************************/
#include INCLUDES_MINI
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#define LONGUEUR_D_AVERTISSEMENT \
GRO4(LONGUEUR_D_UNE_LIGNE_SOURCE) \
/* Longueur arbitraire d'avertissement... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M I S E S U R U N E S E U L E L I G N E D E S C H A I N E S D E C A R A C T E R E S */
/* E N T R E L E S A P O S T R O P H E S E T L E S Q U O T E S */
/* A I N S I Q U E L E S A N T I - Q U O T E S : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(Int,INIT(longueur_d_avertissement,LONGUEUR_D_AVERTISSEMENT));
/* Longueur arbitraire d'avertissement... */
DEFV(Int,INIT(nombre_de_caracteres_de_la_ligne_courante,ZERO));
/* Nombre de caracteres sur la ligne courante... */
DEFV(Char,INIT(caractere_courant,K_UNDEF));
/* Caractere courant. */
DEFV(Logical,INIT(on_vient_de_rencontrer_une_apostrophe,FAUX));
/* Cet indicateur indique en permanence si l'on vient de rencontrer */
/* immediatement une apostrophe (') : */
/* */
/* VRAI : apres la premiere rencontree, */
/* FAUX : apres la seconde, */
/* */
/* cet indicateur fonctionnant en bascule, puisque les apostrophes forment */
/* des couples de parentheses... */
DEFV(Logical,INIT(on_vient_de_rencontrer_une_quote,FAUX));
/* Cet indicateur indique en permanence si l'on vient de rencontrer */
/* immediatement une quote (") : */
/* */
/* VRAI : apres la premiere rencontree, */
/* FAUX : apres la seconde, */
/* */
/* cet indicateur fonctionnant en bascule, puisque les quotes forment */
/* des couples de parentheses... */
DEFV(Logical,INIT(on_vient_de_rencontrer_une_anti_quote,FAUX));
/* Cet indicateur indique en permanence si l'on vient de rencontrer */
/* immediatement une anti-quote (`) : */
/* */
/* VRAI : apres la premiere rencontree, */
/* FAUX : apres la seconde, */
/* */
/* cet indicateur fonctionnant en bascule, puisque les anti-quotes forment */
/* des couples de parentheses... */
/*..............................................................................................................................*/
GET_ARGUMENTS_(nombre_d_arguments
,BLOC(GET_ARGUMENT_I("longueur=""l=""L=",longueur_d_avertissement);
)
);
Tant(GetcharT(caractere_courant))
Bblock
/* Le caractere courant de l'entree courante est recupere ; et on boucle */
/* sur cette recuperation tant que l'on n'est pas au bout du fichier. */
Test(I3ET(IFEQ(caractere_courant,K_QUOTE)
,EST_FAUX(on_vient_de_rencontrer_une_anti_quote)
,EST_FAUX(on_vient_de_rencontrer_une_apostrophe)
)
)
Bblock
EGAL(on_vient_de_rencontrer_une_quote,NOTL(on_vient_de_rencontrer_une_quote));
/* On gere les quotes comme des parentheses... */
Eblock
ATes
Bblock
Eblock
ETes
Test(I3ET(IFEQ(caractere_courant,K_APOSTROPHE)
,EST_FAUX(on_vient_de_rencontrer_une_quote)
,EST_FAUX(on_vient_de_rencontrer_une_anti_quote)
)
)
Bblock
EGAL(on_vient_de_rencontrer_une_apostrophe,NOTL(on_vient_de_rencontrer_une_apostrophe));
/* On gere les apostrophes comme des parentheses... */
Eblock
ATes
Bblock
Eblock
ETes
Test(I3ET(IFEQ(caractere_courant,K_ANTI_QUOTE)
,EST_FAUX(on_vient_de_rencontrer_une_apostrophe)
,EST_FAUX(on_vient_de_rencontrer_une_quote)
)
)
Bblock
EGAL(on_vient_de_rencontrer_une_anti_quote,NOTL(on_vient_de_rencontrer_une_anti_quote));
/* On gere les anti-quotes comme des parentheses... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IFET(IFEQ(caractere_courant,K_LF)
,I3OU(EST_VRAI(on_vient_de_rencontrer_une_apostrophe)
,EST_VRAI(on_vient_de_rencontrer_une_quote)
,EST_VRAI(on_vient_de_rencontrer_une_anti_quote)
)
)
)
Bblock
/* Les caracteres 'K_LF' a l'interieur d'une chaine de caracteres ne sont pas transmis... */
Eblock
ATes
Bblock
CALS(Putchar(caractere_courant));
/* Les caracteres sont transmis sauf s'il s'agit d'un 'K_LF' a l'interieur d'une chaine */
/* de caracteres... */
Test(IFEQ(caractere_courant,K_LF))
Bblock
Test(IFGT(nombre_de_caracteres_de_la_ligne_courante,longueur_d_avertissement))
Bblock
PRINT_ATTENTION("trop de caracteres ont ete mis sur la derniere ligne generee");
Eblock
ATes
Bblock
Eblock
ETes
CLIR(nombre_de_caracteres_de_la_ligne_courante);
/* Initialisation du nombre de caracteres de la ligne suivante... */
Eblock
ATes
Bblock
INCR(nombre_de_caracteres_de_la_ligne_courante,I);
/* Comptage des caracteres de la ligne courante... */
Eblock
ETes
Eblock
ETes
Eblock
ETan
RETU_Commande;
Eblock
ECommande