Diff for /rpl/src/analyse_notation_algebrique.c between versions 1.16 and 1.43

version 1.16, 2011/01/03 12:08:02 version 1.43, 2013/03/20 17:11:43
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.20    RPL/2 (R) version 4.1.13
   Copyright (C) 1989-2011 Dr. BERTRAND Joël    Copyright (C) 1989-2013 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 20 Line 20
 */  */
   
   
 #include "rpl-conv.h"  #include "rpl-conv.h"
   
   
 /*  /*
 ================================================================================  ================================================================================
   Analyseur syntaxique d'une expression algébrique    Analyseur syntaxique d'une expression algébrique
 ================================================================================  ================================================================================
   Entrées : chaîne de caractères comprenant l'expression algébrique    Entrées : chaîne de caractères comprenant l'expression algébrique
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
   Sorties : chaîne de caractères contenant l'expression convertie en    Sorties : chaîne de caractères contenant l'expression convertie en
     notation polonaise inverse et liste chaînée contenant les diverses      notation polonaise inverse et liste chaînée contenant les diverses
     fonctions.      fonctions.
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
   Effets de bord : néant    Effets de bord : néant
 ================================================================================  ================================================================================
 */  */
   
 unsigned char *  unsigned char *
 analyse_algebrique(struct_processus *s_etat_processus,  analyse_algebrique(struct_processus *s_etat_processus,
         unsigned char *chaine_algebrique, struct_liste_chainee **l_base_liste)          unsigned char *chaine_algebrique, struct_liste_chainee **l_base_liste)
 {  {
     struct_fonction                     *s_fonction;      struct_fonction                     *s_fonction;
   
     struct_liste_chainee                *l_element_courant;      struct_liste_chainee                *l_element_courant;
   
     logical1                            chaine_invalide;      logical1                            chaine_invalide;
     logical1                            drapeau_debut_zone_valide;      logical1                            drapeau_debut_zone_valide;
     logical1                            drapeau_elimination_parentheses;      logical1                            drapeau_elimination_parentheses;
     logical1                            drapeau_fin_boucle;      logical1                            drapeau_fin_boucle;
     logical1                            drapeau_fin_zone_valide;      logical1                            drapeau_fin_zone_valide;
     logical1                            drapeau_modification;      logical1                            drapeau_modification;
     logical1                            drapeau_priorite_entierement_traitee;      logical1                            drapeau_priorite_entierement_traitee;
     logical1                            fin_boucle_extraction;      logical1                            fin_boucle_extraction;
     logical1                            presence_chaine;      logical1                            presence_chaine;
     logical1                            presence_fonction;      logical1                            presence_fonction;
     logical1                            presence_liste;      logical1                            presence_liste;
   
     long                                k;      long                                k;
   
     unsigned char                       *chaine_arguments;      unsigned char                       *chaine_arguments;
     unsigned char                       *chaine_centrale;      unsigned char                       *chaine_centrale;
     unsigned char                       *chaine_droite;      unsigned char                       *chaine_droite;
     unsigned char                       *chaine_fonction;      unsigned char                       *chaine_fonction;
     unsigned char                       *chaine_gauche;      unsigned char                       *chaine_gauche;
     unsigned char                       *chaine_travail;      unsigned char                       *chaine_travail;
     unsigned char                       *epilogue;      unsigned char                       *epilogue;
     unsigned char                       instruction_test[6];      unsigned char                       instruction_test[6];
     unsigned char                       *instruction_majuscule;      unsigned char                       *instruction_majuscule;
     unsigned char                       *prologue;      unsigned char                       *prologue;
     unsigned char                       *ptr1;      unsigned char                       *ptr1;
     unsigned char                       *ptr2;      unsigned char                       *ptr2;
     unsigned char                       *registre_instruction_courante;      unsigned char                       *registre_instruction_courante;
     unsigned char                       registre_instruction_valide;      unsigned char                       registre_instruction_valide;
     unsigned char                       registre_test;      unsigned char                       registre_test;
     unsigned char                       *sous_chaine_droite;      unsigned char                       *sous_chaine_droite;
     unsigned char                       *sous_chaine_gauche;      unsigned char                       *sous_chaine_gauche;
     unsigned char                       t0;      unsigned char                       *tampon;
     unsigned char                       t1;  
     unsigned char                       t2;      int                                 t0;
     unsigned char                       t3;      int                                 t1;
     unsigned char                       t4;      int                                 t2;
     unsigned char                       *tampon;      int                                 t3;
       int                                 t4;
     unsigned long                       debut_zone_algebrique;  
     unsigned long                       fin_zone_algebrique;      integer8                            debut_zone_algebrique;
     unsigned long                       i;      integer8                            fin_zone_algebrique;
     unsigned long                       j;      integer8                            i;
     unsigned long                       longueur_chaine;      integer8                            j;
     unsigned long                       longueur_tampon;      integer8                            longueur_chaine;
     unsigned long                       niveau;      integer8                            longueur_tampon;
     unsigned long                       niveau_liste;      integer8                            niveau;
     unsigned long                       nombre_apostrophes;      integer8                            niveau_liste;
     unsigned long                       nombre_arguments;      integer8                            nombre_apostrophes;
     unsigned long                       priorite;      integer8                            nombre_arguments;
       integer8                            priorite;
     (*l_base_liste) = NULL;  
       (*l_base_liste) = NULL;
     /*  
      * Vérification de la chaîne. Celle-ci doit comporter au moins un      /*
      * caractère entre les délimiteurs ''.       * Vérification de la chaîne. Celle-ci doit comporter au moins un
      */       * caractère entre les délimiteurs ''.
        */
     presence_chaine = d_faux;  
     presence_liste = d_faux;      presence_chaine = d_faux;
     niveau_liste = 0;      presence_liste = d_faux;
       niveau_liste = 0;
     for(i = 1, chaine_invalide = d_vrai; i < strlen(chaine_algebrique) - 1; i++)  
     {      for(i = 1, chaine_invalide = d_vrai; i < ((integer8)
         if (chaine_algebrique[i] != ' ')              strlen(chaine_algebrique)) - 1; i++)
         {      {
             chaine_invalide = d_faux;          if (chaine_algebrique[i] != ' ')
         }          {
               chaine_invalide = d_faux;
         if (chaine_algebrique[i] == '"')          }
         {  
             presence_chaine = (presence_chaine == d_faux) ? d_vrai : d_faux;          if (chaine_algebrique[i] == '"')
         }          {
         else if (presence_chaine == d_faux)              presence_chaine = (presence_chaine == d_faux) ? d_vrai : d_faux;
         {          }
             if (chaine_algebrique[i] == '{')          else if (presence_chaine == d_faux)
             {          {
                 presence_liste = d_vrai;              if (chaine_algebrique[i] == '{')
                 niveau_liste++;              {
             }                  presence_liste = d_vrai;
             else if (chaine_algebrique[i] == '}')                  niveau_liste++;
             {              }
                 presence_liste = d_vrai;              else if (chaine_algebrique[i] == '}')
                 niveau_liste--;              {
             }                  presence_liste = d_vrai;
         }                  niveau_liste--;
     }              }
           }
     if ((chaine_invalide == d_vrai) || (presence_chaine == d_vrai) ||      }
             (niveau_liste != 0) || (presence_liste == d_vrai))  
     {      if ((chaine_invalide == d_vrai) || (presence_chaine == d_vrai) ||
         (*s_etat_processus).erreur_execution = d_ex_expression_invalide;              (niveau_liste != 0) || (presence_liste == d_vrai))
         return(NULL);      {
     }          (*s_etat_processus).erreur_execution = d_ex_expression_invalide;
           return(NULL);
     /*      }
      * Transformation des "**" en "^ "  
      */      /*
        * Transformation des "**" en "^ "
     for(i = 1; i < strlen(chaine_algebrique) - 1; i++)       */
     {  
         if (chaine_algebrique[i] == '*')      for(i = 1; i < ((integer8) strlen(chaine_algebrique)) - 1; i++)
         {      {
             if (chaine_algebrique[i + 1] == '*')          if (chaine_algebrique[i] == '*')
             {          {
                 chaine_algebrique[i++] = '^';              if (chaine_algebrique[i + 1] == '*')
                 chaine_algebrique[i] = ' ';              {
             }                  chaine_algebrique[i++] = '^';
         }                  chaine_algebrique[i] = ' ';
     }              }
           }
     if ((chaine_travail = (unsigned char *) malloc((strlen(chaine_algebrique) +      }
             1) * sizeof(unsigned char))) == NULL)  
     {      if ((chaine_travail = (unsigned char *) malloc((strlen(chaine_algebrique) +
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              1) * sizeof(unsigned char))) == NULL)
         return(NULL);      {
     }          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
           return(NULL);
     strcpy(chaine_travail, chaine_algebrique);      }
   
     /*      strcpy(chaine_travail, chaine_algebrique);
      * Retrait des espaces dans l'expression algébrique  
      */      /*
        * Retrait des espaces dans l'expression algébrique
     ptr1 = chaine_travail;       */
     ptr2 = chaine_travail;  
     presence_chaine = d_faux;      ptr1 = chaine_travail;
       ptr2 = chaine_travail;
     while((*ptr1) != d_code_fin_chaine)      presence_chaine = d_faux;
     {  
         if ((*ptr1) == '"')      while((*ptr1) != d_code_fin_chaine)
         {      {
             if (presence_chaine == d_faux)          if ((*ptr1) == '"')
             {          {
                 presence_chaine = d_vrai;              if (presence_chaine == d_faux)
             }              {
             else                  presence_chaine = d_vrai;
             {              }
                 presence_chaine = d_faux;              else
             }              {
         }                  presence_chaine = d_faux;
               }
         if (presence_chaine == d_faux)          }
         {  
             if ((*ptr1) != ' ')          if (presence_chaine == d_faux)
             {          {
                 (*(ptr2++)) = (*ptr1);              if ((*ptr1) != ' ')
             }              {
             else                  (*(ptr2++)) = (*ptr1);
             {              }
                 instruction_test[5] = d_code_fin_chaine;              else
               {
                 instruction_majuscule = conversion_majuscule(strncpy(                  instruction_test[5] = d_code_fin_chaine;
                         instruction_test, ptr1, 5));  
                   instruction_majuscule = conversion_majuscule(strncpy(
                 if (instruction_majuscule == NULL)                          instruction_test, ptr1, 5));
                 {  
                     (*s_etat_processus).erreur_systeme =                  if (instruction_majuscule == NULL)
                             d_es_allocation_memoire;                  {
                     return(NULL);                      (*s_etat_processus).erreur_systeme =
                 }                              d_es_allocation_memoire;
                       return(NULL);
                 /*                  }
                  * Repérer le premier espace ou la fin de la chaîne.  
                  */                  /*
                    * Repérer le premier espace ou la fin de la chaîne.
                 if (strcmp(instruction_majuscule, " AND ") == 0)                   */
                 {  
                     for(i = 0; i < 4; (*(ptr2++)) = (*(ptr1++)), i++);                  if (strcmp(instruction_majuscule, " AND ") == 0)
                     (*(ptr2++)) = (*ptr1);                  {
                 }                      for(i = 0; i < 4; (*(ptr2++)) = (*(ptr1++)), i++);
                 else if (strcmp(instruction_majuscule, " XOR ") == 0)                      (*(ptr2++)) = (*ptr1);
                 {                  }
                     for(i = 0; i < 4; (*(ptr2++)) = (*(ptr1++)), i++);                  else if (strcmp(instruction_majuscule, " XOR ") == 0)
                     (*(ptr2++)) = (*ptr1);                  {
                 }                      for(i = 0; i < 4; (*(ptr2++)) = (*(ptr1++)), i++);
                 else if ((strncmp(instruction_majuscule, " OR ", 4) == 0) &&                      (*(ptr2++)) = (*ptr1);
                         (strlen(instruction_majuscule) == 4))                  }
                 {                  else if ((strncmp(instruction_majuscule, " OR ", 4) == 0) &&
                     for(i = 0; i < 3; (*(ptr2++)) = (*(ptr1++)), i++);                          (strlen(instruction_majuscule) == 4))
                     (*(ptr2++)) = (*ptr1);                  {
                 }                      for(i = 0; i < 3; (*(ptr2++)) = (*(ptr1++)), i++);
                       (*(ptr2++)) = (*ptr1);
                 free(instruction_majuscule);                  }
             }  
                              free(instruction_majuscule);
             ptr1++;              }
         }              
         else              ptr1++;
         {          }
             (*(ptr2++)) = (*(ptr1++));          else
         }          {
     }              (*(ptr2++)) = (*(ptr1++));
           }
     (*ptr2) = d_code_fin_chaine;      }
   
     do      (*ptr2) = d_code_fin_chaine;
     {  
         i = 0;      do
         drapeau_modification = d_faux;      {
           i = 0;
         do          drapeau_modification = d_faux;
         {  
             presence_chaine = d_faux;          do
             drapeau_debut_zone_valide = d_faux;          {
             debut_zone_algebrique = 0;              presence_chaine = d_faux;
             drapeau_fin_boucle = d_faux;              drapeau_debut_zone_valide = d_faux;
               debut_zone_algebrique = 0;
             do              drapeau_fin_boucle = d_faux;
             {  
                 if (chaine_travail[i] == d_code_fin_chaine)              do
                 {              {
                     drapeau_fin_boucle = d_vrai;                  if (chaine_travail[i] == d_code_fin_chaine)
                 }                  {
                 else if ((chaine_travail[i] == '\'') &&                      drapeau_fin_boucle = d_vrai;
                         (presence_chaine == d_faux))                  }
                 {                  else if ((chaine_travail[i] == '\'') &&
                     drapeau_fin_boucle = d_vrai;                          (presence_chaine == d_faux))
                     debut_zone_algebrique = i;                  {
                     drapeau_debut_zone_valide = d_vrai;                      drapeau_fin_boucle = d_vrai;
                 }                      debut_zone_algebrique = i;
                 else if (chaine_travail[i] == '"')                      drapeau_debut_zone_valide = d_vrai;
                 {                  }
                     presence_chaine = (presence_chaine == d_vrai)                  else if (chaine_travail[i] == '"')
                             ? d_faux : d_vrai;                  {
                 }                      presence_chaine = (presence_chaine == d_vrai)
                               ? d_faux : d_vrai;
                 i++;                  }
             } while(drapeau_fin_boucle == d_faux);  
                   i++;
             presence_chaine = 0;              } while(drapeau_fin_boucle == d_faux);
             drapeau_fin_zone_valide = d_faux;  
               presence_chaine = 0;
             if (drapeau_debut_zone_valide == d_vrai)              drapeau_fin_zone_valide = d_faux;
             {  
                 j = debut_zone_algebrique + 1;              if (drapeau_debut_zone_valide == d_vrai)
             }              {
             else                  j = debut_zone_algebrique + 1;
             {              }
                 j = 0;              else
             }              {
                   j = 0;
             fin_zone_algebrique = 0;              }
             drapeau_fin_boucle = d_faux;  
               fin_zone_algebrique = 0;
             do              drapeau_fin_boucle = d_faux;
             {  
                 if (chaine_travail[j] == 0)              do
                 {              {
                     drapeau_fin_boucle = d_vrai;                  if (chaine_travail[j] == 0)
                 }                  {
                       drapeau_fin_boucle = d_vrai;
                 if ((chaine_travail[j] == '\'') && (presence_chaine == d_faux))                  }
                 {  
                     drapeau_fin_boucle = d_vrai;                  if ((chaine_travail[j] == '\'') && (presence_chaine == d_faux))
                     fin_zone_algebrique = j;                  {
                     drapeau_fin_zone_valide = d_vrai;                      drapeau_fin_boucle = d_vrai;
                 }                      fin_zone_algebrique = j;
                       drapeau_fin_zone_valide = d_vrai;
                 if (chaine_travail[j] == '"')                  }
                 {  
                     presence_chaine = (presence_chaine == d_vrai)                  if (chaine_travail[j] == '"')
                             ? d_faux : d_vrai;                  {
                 }                      presence_chaine = (presence_chaine == d_vrai)
                               ? d_faux : d_vrai;
                 j++;                  }
             } while(drapeau_fin_boucle == d_faux);  
                   j++;
             if ((drapeau_debut_zone_valide == d_vrai) &&              } while(drapeau_fin_boucle == d_faux);
                     (drapeau_fin_zone_valide == d_vrai))  
             {              if ((drapeau_debut_zone_valide == d_vrai) &&
                 chaine_gauche = purification_chaine(                      (drapeau_fin_zone_valide == d_vrai))
                         extraction_chaine(chaine_travail,              {
                         1, debut_zone_algebrique));                  chaine_gauche = purification_chaine(
                 chaine_centrale = purification_chaine(                          extraction_chaine(chaine_travail,
                         extraction_chaine(chaine_travail,                          1, debut_zone_algebrique));
                         debut_zone_algebrique + 1, fin_zone_algebrique + 1));                  chaine_centrale = purification_chaine(
                 chaine_droite = purification_chaine(                          extraction_chaine(chaine_travail,
                         extraction_chaine(chaine_travail,                          debut_zone_algebrique + 1, fin_zone_algebrique + 1));
                         fin_zone_algebrique + 2, strlen(chaine_travail)));                  chaine_droite = purification_chaine(
                           extraction_chaine(chaine_travail,
                 free(chaine_travail);                          fin_zone_algebrique + 2,
                           (integer8) strlen(chaine_travail)));
                 if ((chaine_gauche == NULL) || (chaine_centrale == NULL) ||  
                         (chaine_droite == NULL))                  free(chaine_travail);
                 {  
                     (*s_etat_processus).erreur_systeme =                  if ((chaine_gauche == NULL) || (chaine_centrale == NULL) ||
                             d_es_allocation_memoire;                          (chaine_droite == NULL))
                     return(NULL);                  {
                 }                      (*s_etat_processus).erreur_systeme =
                               d_es_allocation_memoire;
                 if ((strcmp(chaine_centrale, "''") == 0) ||                      return(NULL);
                         (strcmp(chaine_centrale, "'()'") == 0))                  }
                 {  
                     free(chaine_gauche);                  if ((strcmp(chaine_centrale, "''") == 0) ||
                     free(chaine_centrale);                          (strcmp(chaine_centrale, "'()'") == 0))
                     free(chaine_droite);                  {
                       free(chaine_gauche);
                     (*s_etat_processus).erreur_execution =                      free(chaine_centrale);
                             d_ex_expression_invalide;                      free(chaine_droite);
                     return(NULL);  
                 }                      (*s_etat_processus).erreur_execution =
                               d_ex_expression_invalide;
                 i = 1;                      return(NULL);
                 niveau = 0;                  }
                 drapeau_elimination_parentheses = d_vrai;  
                 presence_chaine = d_faux;                  i = 1;
                   niveau = 0;
                 while(i < (strlen(chaine_centrale) - 1))                  drapeau_elimination_parentheses = d_vrai;
                 {                  presence_chaine = d_faux;
                     if (chaine_centrale[i] == '"')  
                     {                  while(i < ((integer8) strlen(chaine_centrale)) - 1)
                         presence_chaine = (presence_chaine == d_faux)                  {
                                 ? d_vrai : d_faux;                      if (chaine_centrale[i] == '"')
                       {
                         if (i == 1)                          presence_chaine = (presence_chaine == d_faux)
                         {                                  ? d_vrai : d_faux;
                             drapeau_elimination_parentheses = d_faux;  
                         }                          if (i == 1)
                     }                          {
                     else if (presence_chaine == d_faux)                              drapeau_elimination_parentheses = d_faux;
                     {                          }
                         if (chaine_centrale[i] == '(')                      }
                         {                      else if (presence_chaine == d_faux)
                             niveau++;                      {
                         }                          if (chaine_centrale[i] == '(')
                           {
                         if ((niveau == 0) || ((((test_cfsf(s_etat_processus,                              niveau++;
                                 48) == d_vrai) && (chaine_centrale[i] ==                          }
                                 '.')) || ((test_cfsf(s_etat_processus, 48)  
                                 == d_faux) && (chaine_centrale[i] == ',')))                          if ((niveau == 0) || ((((test_cfsf(s_etat_processus,
                                 && (niveau == 1)))                                  48) == d_vrai) && (chaine_centrale[i] ==
                         {                                  '.')) || ((test_cfsf(s_etat_processus, 48)
                             drapeau_elimination_parentheses = d_faux;                                  == d_faux) && (chaine_centrale[i] == ',')))
                         }                                  && (niveau == 1)))
                           {
                         if (chaine_centrale[i] == ')')                              drapeau_elimination_parentheses = d_faux;
                         {                          }
                             niveau--;  
                         }                          if (chaine_centrale[i] == ')')
                     }                          {
                               niveau--;
                     i++;                          }
                 }                      }
   
                 if (drapeau_elimination_parentheses == d_vrai)                      i++;
                 {                  }
                     tampon = chaine_centrale;  
                   if (drapeau_elimination_parentheses == d_vrai)
                     if ((chaine_centrale = (unsigned char *) malloc(                  {
                             (strlen(tampon) - 1) * sizeof(unsigned char)))                      tampon = chaine_centrale;
                             == NULL)  
                     {                      if ((chaine_centrale = (unsigned char *) malloc(
                         (*s_etat_processus).erreur_systeme =                              (strlen(tampon) - 1) * sizeof(unsigned char)))
                                 d_es_allocation_memoire;                              == NULL)
                         return(NULL);                      {
                     }                          (*s_etat_processus).erreur_systeme =
                                   d_es_allocation_memoire;
                     tampon[strlen(tampon) - 2] = d_code_fin_chaine;                          return(NULL);
                       }
                     sprintf(chaine_centrale, "'%s'", &(tampon[2]));  
                     free(tampon);                      tampon[strlen(tampon) - 2] = d_code_fin_chaine;
   
                     fin_zone_algebrique -= 2;                      sprintf(chaine_centrale, "'%s'", &(tampon[2]));
                     drapeau_modification = d_vrai;                      free(tampon);
                 }  
                       fin_zone_algebrique -= 2;
                 if ((test_expression_rpn(chaine_centrale) == d_vrai) &&                      drapeau_modification = d_vrai;
                         (fin_zone_algebrique - debut_zone_algebrique > 0))                  }
                 {  
                     if ((tampon = purification_chaine(                  if ((test_expression_rpn(chaine_centrale) == d_vrai) &&
                             extraction_chaine(chaine_centrale, 2,                          (fin_zone_algebrique - debut_zone_algebrique > 0))
                             strlen(chaine_centrale) - 1))) == NULL)                  {
                     {                      if ((tampon = purification_chaine(
                         (*s_etat_processus).erreur_systeme =                              extraction_chaine(chaine_centrale, 2,
                                 d_es_allocation_memoire;                              ((integer8) strlen(chaine_centrale)) - 1))) == NULL)
                         return(NULL);                      {
                     }                          (*s_etat_processus).erreur_systeme =
                                   d_es_allocation_memoire;
                     /*                          return(NULL);
                      * Si on tombe sur une fonction intrinsèque ou                      }
                      * extrinsèque, il doit y avoir des arguments passés  
                      * entre parenthèses et on ne doit pas passer par ici !                      /*
                      */                       * Si on tombe sur une fonction intrinsèque ou
                        * extrinsèque, il doit y avoir des arguments passés
                     registre_instruction_courante = (*s_etat_processus)                       * entre parenthèses et on ne doit pas passer par ici !
                             .instruction_courante;                       */
                     registre_test = (*s_etat_processus).test_instruction;  
                     registre_instruction_valide = (*s_etat_processus)                      registre_instruction_courante = (*s_etat_processus)
                             .instruction_valide;                              .instruction_courante;
                       registre_test = (*s_etat_processus).test_instruction;
                     (*s_etat_processus).test_instruction = 'Y';                      registre_instruction_valide = (*s_etat_processus)
                     (*s_etat_processus).instruction_courante = tampon;                              .instruction_valide;
   
                     analyse(s_etat_processus, NULL);                      (*s_etat_processus).test_instruction = 'Y';
                       (*s_etat_processus).instruction_courante = tampon;
                     (*s_etat_processus).test_instruction = registre_test;  
                     (*s_etat_processus).instruction_courante =                      analyse(s_etat_processus, NULL);
                             registre_instruction_courante;  
                       (*s_etat_processus).test_instruction = registre_test;
                     if (((*s_etat_processus).instruction_valide == 'Y') &&                      (*s_etat_processus).instruction_courante =
                             ((*s_etat_processus).constante_symbolique == 'N'))                              registre_instruction_courante;
                     {  
                         free(chaine_gauche);                      if (((*s_etat_processus).instruction_valide == 'Y') &&
                         free(chaine_centrale);                              ((*s_etat_processus).constante_symbolique == 'N'))
                         free(chaine_droite);                      {
                         free(tampon);                          free(chaine_gauche);
                           free(chaine_centrale);
                         (*s_etat_processus).instruction_valide =                          free(chaine_droite);
                                 registre_instruction_valide;                          free(tampon);
   
                         (*s_etat_processus).erreur_execution =                          (*s_etat_processus).instruction_valide =
                                 d_ex_expression_invalide;                                  registre_instruction_valide;
                         return(NULL);  
                     }                          (*s_etat_processus).erreur_execution =
                                   d_ex_expression_invalide;
                     (*s_etat_processus).instruction_valide =                          return(NULL);
                             registre_instruction_valide;                      }
   
                     free(chaine_centrale);                      (*s_etat_processus).instruction_valide =
                     chaine_centrale = tampon;                              registre_instruction_valide;
   
                     fin_zone_algebrique--;                      free(chaine_centrale);
                     drapeau_modification = d_vrai;                      chaine_centrale = tampon;
                 }  
                 else if ((test_fonction(chaine_centrale) == d_vrai) &&                      fin_zone_algebrique--;
                         (fin_zone_algebrique - debut_zone_algebrique > 0))                      drapeau_modification = d_vrai;
                 {                  }
                     i = 1;                  else if ((test_fonction(chaine_centrale) == d_vrai) &&
                     while((i < (strlen(chaine_centrale) - 1)) &&                          (fin_zone_algebrique - debut_zone_algebrique > 0))
                             (chaine_centrale[i] != '('))                  {
                     {                      i = 1;
                         i++;                      while((i < ((integer8) strlen(chaine_centrale)) - 1) &&
                     }                              (chaine_centrale[i] != '('))
                       {
                     j = strlen(chaine_centrale) - 1;                          i++;
                     while(chaine_centrale[j] != ')')                      }
                     {  
                         j--;                      j = ((integer8) strlen(chaine_centrale)) - 1;
                     }                      while(chaine_centrale[j] != ')')
                       {
                     chaine_fonction = purification_chaine(                          j--;
                             extraction_chaine(chaine_centrale, 2, i));                      }
                     chaine_arguments = purification_chaine(  
                             extraction_chaine(chaine_centrale, i + 2, j));                      chaine_fonction = purification_chaine(
                               extraction_chaine(chaine_centrale, 2, i));
                     i = 0;                      chaine_arguments = purification_chaine(
                     niveau = 0;                              extraction_chaine(chaine_centrale, i + 2, j));
                     nombre_arguments = 1;  
                       i = 0;
                     while(chaine_arguments[i] != d_code_fin_chaine)                      niveau = 0;
                     {                      nombre_arguments = 1;
                         if (chaine_arguments[i] == '(')  
                         {                      while(chaine_arguments[i] != d_code_fin_chaine)
                             niveau++;                      {
                         }                          if (chaine_arguments[i] == '(')
                           {
                         if (chaine_arguments[i] == ')')                              niveau++;
                         {                          }
                             niveau--;  
                         }                          if (chaine_arguments[i] == ')')
                           {
                         if ((chaine_arguments[i] == ',') && (niveau == 0))                              niveau--;
                         {                          }
                             sous_chaine_gauche = purification_chaine(  
                                     extraction_chaine(chaine_arguments, 1, i));                          if ((chaine_arguments[i] == ',') && (niveau == 0))
                             sous_chaine_droite = purification_chaine(                          {
                                     extraction_chaine(chaine_arguments, i + 2,                              sous_chaine_gauche = purification_chaine(
                                     strlen(chaine_arguments)));                                      extraction_chaine(chaine_arguments, 1, i));
                               sous_chaine_droite = purification_chaine(
                             free(chaine_arguments);                                      extraction_chaine(chaine_arguments, i + 2,
                                       ((integer8) strlen(chaine_arguments))));
                             if ((chaine_arguments = (unsigned char *) malloc(  
                                     (strlen(sous_chaine_gauche) + strlen(                              free(chaine_arguments);
                                     sous_chaine_droite) + 3 + 1) * sizeof(  
                                     unsigned char))) == NULL)                              if ((chaine_arguments = (unsigned char *) malloc(
                             {                                      (strlen(sous_chaine_gauche) + strlen(
                                 (*s_etat_processus).erreur_systeme =                                      sous_chaine_droite) + 3 + 1) * sizeof(
                                         d_es_allocation_memoire;                                      unsigned char))) == NULL)
                                 return(NULL);                              {
                             }                                  (*s_etat_processus).erreur_systeme =
                                           d_es_allocation_memoire;
                             sprintf(chaine_arguments, "%s' '%s",                                  return(NULL);
                                     sous_chaine_gauche, sous_chaine_droite);                              }
                             i += 2;  
                               sprintf(chaine_arguments, "%s' '%s",
                             free(sous_chaine_gauche);                                      sous_chaine_gauche, sous_chaine_droite);
                             free(sous_chaine_droite);                              i += 2;
   
                             nombre_arguments++;                              free(sous_chaine_gauche);
                         }                              free(sous_chaine_droite);
   
                         i++;                              nombre_arguments++;
                     }                          }
   
                     free(chaine_centrale);                          i++;
                       }
                     l_element_courant = (*l_base_liste);  
                     presence_fonction = d_faux;                      free(chaine_centrale);
   
                     while((l_element_courant != NULL) &&                      l_element_courant = (*l_base_liste);
                             (presence_fonction == d_faux))                      presence_fonction = d_faux;
                     {  
                         if (strcmp((*((struct_fonction *) ((*l_element_courant)                      while((l_element_courant != NULL) &&
                                 .donnee))).nom_fonction, chaine_fonction) == 0)                              (presence_fonction == d_faux))
                         {                      {
                             presence_fonction = d_vrai;                          if (strcmp((*((struct_fonction *) ((*l_element_courant)
                         }                                  .donnee))).nom_fonction, chaine_fonction) == 0)
                         else                          {
                         {                              presence_fonction = d_vrai;
                             l_element_courant = (*l_element_courant).suivant;                          }
                         }                          else
                     }                          {
                               l_element_courant = (*l_element_courant).suivant;
                     if (presence_fonction == d_vrai)                          }
                     {                      }
                         if ((*((struct_fonction *)  
                                 ((*l_element_courant).donnee)))                      if (presence_fonction == d_vrai)
                                 .nombre_arguments != nombre_arguments)                      {
                         {                          if ((*((struct_fonction *)
                             (*s_etat_processus).erreur_execution =                                  ((*l_element_courant).donnee)))
                                     d_ex_nombre_arguments;                                  .nombre_arguments != nombre_arguments)
                           {
                             free(chaine_arguments);                              (*s_etat_processus).erreur_execution =
                             free(chaine_fonction);                                      d_ex_nombre_arguments;
                             free(chaine_gauche);  
                             free(chaine_droite);                              free(chaine_arguments);
                               free(chaine_fonction);
                             return(NULL);                              free(chaine_gauche);
                         }                              free(chaine_droite);
                     }  
                     else                              return(NULL);
                     {                          }
                         registre_instruction_courante = (*s_etat_processus)                      }
                                 .instruction_courante;                      else
                         registre_test = (*s_etat_processus).test_instruction;                      {
                         registre_instruction_valide = (*s_etat_processus)                          registre_instruction_courante = (*s_etat_processus)
                                 .instruction_valide;                                  .instruction_courante;
                           registre_test = (*s_etat_processus).test_instruction;
                         (*s_etat_processus).test_instruction = 'Y';                          registre_instruction_valide = (*s_etat_processus)
                         (*s_etat_processus).instruction_courante =                                  .instruction_valide;
                                 chaine_fonction;  
                           (*s_etat_processus).test_instruction = 'Y';
                         analyse(s_etat_processus, NULL);                          (*s_etat_processus).instruction_courante =
                                   chaine_fonction;
                         (*s_etat_processus).test_instruction = registre_test;  
                         (*s_etat_processus).instruction_courante =                          analyse(s_etat_processus, NULL);
                                 registre_instruction_courante;  
                         (*s_etat_processus).instruction_valide =                          (*s_etat_processus).test_instruction = registre_test;
                                 registre_instruction_valide;                          (*s_etat_processus).instruction_courante =
                                   registre_instruction_courante;
                         if (((unsigned long) (*s_etat_processus)                          (*s_etat_processus).instruction_valide =
                                 .nombre_arguments != nombre_arguments) &&                                  registre_instruction_valide;
                                 ((*s_etat_processus).nombre_arguments != -2))  
                         {                          if (((*s_etat_processus).nombre_arguments !=
                             (*s_etat_processus).erreur_execution =                                  nombre_arguments) &&
                                     d_ex_nombre_arguments_fonction;                                  ((*s_etat_processus).nombre_arguments != -2))
                           {
                             free(chaine_arguments);                              (*s_etat_processus).erreur_execution =
                             free(chaine_fonction);                                      d_ex_nombre_arguments_fonction;
                             free(chaine_gauche);  
                             free(chaine_droite);                              free(chaine_arguments);
                               free(chaine_fonction);
                             return(NULL);                              free(chaine_gauche);
                         }                              free(chaine_droite);
   
                         if ((l_element_courant = (struct_liste_chainee *)                              return(NULL);
                                 malloc(sizeof(struct_liste_chainee))) == NULL)                          }
                         {  
                             (*s_etat_processus).erreur_systeme =                          if ((l_element_courant = (struct_liste_chainee *)
                                     d_es_allocation_memoire;                                  malloc(sizeof(struct_liste_chainee))) == NULL)
                             return(NULL);                          {
                         }                              (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                         (*l_element_courant).suivant = (*l_base_liste);                              return(NULL);
                         (*l_base_liste) = l_element_courant;                          }
   
                         if ((s_fonction = malloc(sizeof(struct_fonction)))                          (*l_element_courant).suivant = (*l_base_liste);
                                 == NULL)                          (*l_base_liste) = l_element_courant;
                         {  
                             (*s_etat_processus).erreur_systeme =                          if ((s_fonction = malloc(sizeof(struct_fonction)))
                                     d_es_allocation_memoire;                                  == NULL)
                             return(NULL);                          {
                         }                              (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                         if (((*s_fonction).nom_fonction = (unsigned char *)                              return(NULL);
                                 malloc((strlen(chaine_fonction) + 1) *                          }
                                 sizeof(unsigned char))) == NULL)  
                         {                          if (((*s_fonction).nom_fonction = (unsigned char *)
                             (*s_etat_processus).erreur_systeme =                                  malloc((strlen(chaine_fonction) + 1) *
                                     d_es_allocation_memoire;                                  sizeof(unsigned char))) == NULL)
                             return(NULL);                          {
                         }                              (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                         strcpy((*s_fonction).nom_fonction, chaine_fonction);                              return(NULL);
                         (*s_fonction).nombre_arguments = nombre_arguments;                          }
   
                         (*(*l_base_liste)).donnee = (void *) s_fonction;                          strcpy((*s_fonction).nom_fonction, chaine_fonction);
                     }                          (*s_fonction).nombre_arguments = nombre_arguments;
   
                     if ((chaine_centrale = (unsigned char *) malloc((strlen(                          (*(*l_base_liste)).donnee = (void *) s_fonction;
                             chaine_arguments) + 1 + strlen(chaine_fonction)                      }
                             + 1 + 2) * sizeof(unsigned char))) == NULL)  
                     {                      if ((chaine_centrale = (unsigned char *) malloc((strlen(
                         (*s_etat_processus).erreur_systeme =                              chaine_arguments) + 1 + strlen(chaine_fonction)
                                 d_es_allocation_memoire;                              + 1 + 2) * sizeof(unsigned char))) == NULL)
                         return(NULL);                      {
                     }                          (*s_etat_processus).erreur_systeme =
                                   d_es_allocation_memoire;
                     sprintf(chaine_centrale, "'%s' %s", chaine_arguments,                          return(NULL);
                             chaine_fonction);                      }
                     drapeau_modification = d_vrai;  
                       sprintf(chaine_centrale, "'%s' %s", chaine_arguments,
                     free(chaine_arguments);                              chaine_fonction);
                     free(chaine_fonction);                      drapeau_modification = d_vrai;
                 }  
                 else if ((chaine_centrale[1] == '+') ||                      free(chaine_arguments);
                         (chaine_centrale[1] == '-'))                      free(chaine_fonction);
                 {                  }
                     if (chaine_centrale[1] == '-')                  else if ((chaine_centrale[1] == '+') ||
                     {                          (chaine_centrale[1] == '-'))
                         tampon = chaine_centrale;                  {
                       if (chaine_centrale[1] == '-')
                         if ((chaine_centrale = (unsigned char *) malloc(                      {
                                 (strlen(tampon) + 5) * sizeof(unsigned char)))                          tampon = chaine_centrale;
                                 == NULL)  
                         {                          if ((chaine_centrale = (unsigned char *) malloc(
                             (*s_etat_processus).erreur_systeme =                                  (strlen(tampon) + 5) * sizeof(unsigned char)))
                                     d_es_allocation_memoire;                                  == NULL)
                             return(NULL);                          {
                         }                              (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                         tampon[strlen(tampon) - 1] = d_code_fin_chaine;                              return(NULL);
                         sprintf(chaine_centrale, "'NEG(%s)'", &(tampon[2]));                          }
                         fin_zone_algebrique += 5;  
                         drapeau_modification = d_vrai;                          tampon[strlen(tampon) - 1] = d_code_fin_chaine;
                           sprintf(chaine_centrale, "'NEG(%s)'", &(tampon[2]));
                         free(tampon);                          fin_zone_algebrique += 5;
                     }                          drapeau_modification = d_vrai;
                     else  
                     {                          free(tampon);
                         tampon = chaine_centrale;                      }
                       else
                         if ((chaine_centrale = (unsigned char *) malloc(                      {
                                 (strlen(tampon) + 7) * sizeof(unsigned char)))                          tampon = chaine_centrale;
                                 == NULL)  
                         {                          if ((chaine_centrale = (unsigned char *) malloc(
                             (*s_etat_processus).erreur_systeme =                                  (strlen(tampon) + 7) * sizeof(unsigned char)))
                                     d_es_allocation_memoire;                                  == NULL)
                             return(NULL);                          {
                         }                              (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                         tampon[strlen(tampon) - 1] = d_code_fin_chaine;                              return(NULL);
                         sprintf(chaine_centrale, "'RELAX(%s)'", &(tampon[2]));                          }
                         fin_zone_algebrique += 7;  
                         drapeau_modification = d_vrai;                          tampon[strlen(tampon) - 1] = d_code_fin_chaine;
                           sprintf(chaine_centrale, "'RELAX(%s)'", &(tampon[2]));
                         free(tampon);                          fin_zone_algebrique += 7;
                     }                          drapeau_modification = d_vrai;
                 }  
                           free(tampon);
                 if ((chaine_travail = (unsigned char *) malloc(                      }
                         (strlen(chaine_gauche) + strlen(chaine_centrale) +                  }
                         strlen(chaine_droite) + 1 + 2) * sizeof(unsigned char)))  
                         == NULL)                  if ((chaine_travail = (unsigned char *) malloc(
                 {                          (strlen(chaine_gauche) + strlen(chaine_centrale) +
                     (*s_etat_processus).erreur_systeme =                          strlen(chaine_droite) + 1 + 2) * sizeof(unsigned char)))
                             d_es_allocation_memoire;                          == NULL)
                     return(NULL);                  {
                 }                      (*s_etat_processus).erreur_systeme =
                               d_es_allocation_memoire;
                 sprintf(chaine_travail, "%s %s %s", chaine_gauche,                      return(NULL);
                         chaine_centrale, chaine_droite);                  }
   
                 free(chaine_gauche);                  sprintf(chaine_travail, "%s %s %s", chaine_gauche,
                 free(chaine_centrale);                          chaine_centrale, chaine_droite);
                 free(chaine_droite);  
             }                  free(chaine_gauche);
                   free(chaine_centrale);
             i = fin_zone_algebrique + 1;                  free(chaine_droite);
         } while((drapeau_debut_zone_valide == d_vrai)              }
                 && (drapeau_fin_zone_valide == d_vrai));  
               i = fin_zone_algebrique + 1;
         for(longueur_chaine = strlen(chaine_travail),          } while((drapeau_debut_zone_valide == d_vrai)
                 i = nombre_apostrophes = 0; i < longueur_chaine;                  && (drapeau_fin_zone_valide == d_vrai));
                 nombre_apostrophes += (chaine_travail[i++] == '\'') ? 1 : 0);  
           for(longueur_chaine = (integer8) strlen(chaine_travail),
         if (nombre_apostrophes != 0)                  i = nombre_apostrophes = 0; i < longueur_chaine;
         {                  nombre_apostrophes += (chaine_travail[i++] == '\'') ? 1 : 0);
             priorite = 1;  
           if (nombre_apostrophes != 0)
             do          {
             {              priorite = 1;
                 drapeau_priorite_entierement_traitee = d_vrai;  
               do
                 i = 0;              {
                 while((chaine_travail[i] != '\'') && (chaine_travail[i] != 0))                  drapeau_priorite_entierement_traitee = d_vrai;
                 {  
                     i++;                  i = 0;
                 }                  while((chaine_travail[i] != '\'') && (chaine_travail[i] != 0))
                   {
                 if (chaine_travail[i] == 0)                      i++;
                 {                  }
                     i = 0;  
                 }                  if (chaine_travail[i] == 0)
                   {
                 j = i + 1;                      i = 0;
                 while((chaine_travail[j] != '\'') && (chaine_travail[j] != 0))                  }
                 {  
                     j++;                  j = i + 1;
                 }                  while((chaine_travail[j] != '\'') && (chaine_travail[j] != 0))
                   {
                 if (chaine_travail[j] == 0)                      j++;
                 {                  }
                     j = 0;  
                 }                  if (chaine_travail[j] == 0)
                   {
                 if ((chaine_travail[i] != 0) && (j != 0))                      j = 0;
                 {                  }
                     chaine_gauche = purification_chaine(  
                             extraction_chaine(chaine_travail, 1, i));                  if ((chaine_travail[i] != 0) && (j != 0))
                     chaine_centrale = purification_chaine(                  {
                             extraction_chaine(chaine_travail,                      chaine_gauche = purification_chaine(
                             i + 1, j + 1));                              extraction_chaine(chaine_travail, 1, i));
                     chaine_droite = purification_chaine(                      chaine_centrale = purification_chaine(
                             extraction_chaine(chaine_travail, j + 2,                              extraction_chaine(chaine_travail,
                             strlen(chaine_travail)));                              i + 1, j + 1));
                       chaine_droite = purification_chaine(
                     if ((chaine_gauche == NULL) || (chaine_centrale == NULL) ||                              extraction_chaine(chaine_travail, j + 2,
                             (chaine_droite == NULL))                              ((integer8) strlen(chaine_travail))));
                     {  
                         (*s_etat_processus).erreur_systeme =                      if ((chaine_gauche == NULL) || (chaine_centrale == NULL) ||
                                 d_es_allocation_memoire;                              (chaine_droite == NULL))
                         return(NULL);                      {
                     }                          (*s_etat_processus).erreur_systeme =
                                   d_es_allocation_memoire;
                     drapeau_elimination_parentheses = d_vrai;                          return(NULL);
                       }
                     if ((longueur_tampon = strlen(chaine_centrale)) != 0)  
                     {                      drapeau_elimination_parentheses = d_vrai;
                         niveau = 0;  
                       if ((longueur_tampon = ((integer8) strlen(chaine_centrale)))
                         for(i = 1; i < longueur_tampon - 1; i++)                              != 0)
                         {                      {
                             if (chaine_centrale[i] == '(')                          niveau = 0;
                             {  
                                 niveau++;                          for(i = 1; i < longueur_tampon - 1; i++)
                             }                          {
                               if (chaine_centrale[i] == '(')
                             if ((niveau == 0) || ((((test_cfsf(s_etat_processus,                              {
                                     48) == d_vrai) && (chaine_centrale[i] ==                                  niveau++;
                                     '.')) || ((test_cfsf(s_etat_processus, 48)                              }
                                     == d_faux) && (chaine_centrale[i] == ',')))  
                                     && (niveau == 1)))                              if ((niveau == 0) || ((((test_cfsf(s_etat_processus,
                             {                                      48) == d_vrai) && (chaine_centrale[i] ==
                                 drapeau_elimination_parentheses = d_faux;                                      '.')) || ((test_cfsf(s_etat_processus, 48)
                             }                                      == d_faux) && (chaine_centrale[i] == ',')))
                                       && (niveau == 1)))
                             if (chaine_centrale[i] == ')')                              {
                             {                                  drapeau_elimination_parentheses = d_faux;
                                 niveau--;                              }
                             }  
                         }                              if (chaine_centrale[i] == ')')
                               {
                         if (drapeau_elimination_parentheses == d_vrai)                                  niveau--;
                         {                              }
                             if ((tampon = (unsigned char *) malloc(                          }
                                     ((longueur_tampon = strlen(  
                                     chaine_centrale)) + 1) * sizeof(                          if (drapeau_elimination_parentheses == d_vrai)
                                     unsigned char))) == NULL)                          {
                             {                              if ((tampon = (unsigned char *) malloc(((size_t)
                                 (*s_etat_processus).erreur_systeme =                                      ((longueur_tampon = (integer8) strlen(
                                         d_es_allocation_memoire;                                      chaine_centrale)) + 1)) * sizeof(
                                 return(NULL);                                      unsigned char))) == NULL)
                             }                              {
                                   (*s_etat_processus).erreur_systeme =
                             chaine_centrale[longueur_tampon - 2] =                                          d_es_allocation_memoire;
                                     d_code_fin_chaine;                                  return(NULL);
                             sprintf(tampon, "'%s'", &(chaine_centrale[2]));                              }
                             free(chaine_centrale);  
                             chaine_centrale = tampon;                              chaine_centrale[longueur_tampon - 2] =
                             drapeau_modification = d_vrai;                                      d_code_fin_chaine;
                         }                              sprintf(tampon, "'%s'", &(chaine_centrale[2]));
                     }                              free(chaine_centrale);
                               chaine_centrale = tampon;
                     if ((tampon = (unsigned char *) malloc(sizeof(                              drapeau_modification = d_vrai;
                             unsigned char))) == NULL)                          }
                     {                      }
                         (*s_etat_processus).erreur_systeme =  
                                 d_es_allocation_memoire;                      if ((tampon = (unsigned char *) malloc(sizeof(
                         return(NULL);                              unsigned char))) == NULL)
                     }                      {
                           (*s_etat_processus).erreur_systeme =
                     tampon[0] = d_code_fin_chaine;                                  d_es_allocation_memoire;
                     longueur_chaine = strlen(chaine_centrale);                          return(NULL);
                     niveau = 0;                      }
                     k = strlen(chaine_centrale) - 1;  
                     fin_boucle_extraction = d_faux;                      tampon[0] = d_code_fin_chaine;
                       longueur_chaine = (integer8) strlen(chaine_centrale);
                     while((k >= 0) && (fin_boucle_extraction ==                      k = ((integer8) strlen(chaine_centrale)) - 1;
                             d_faux))                      niveau = 0;
                     {                      fin_boucle_extraction = d_faux;
                         t0 = ((size_t) k < strlen(chaine_centrale))  
                                 ? chaine_centrale[k + 1] : ' ';                      while((k >= 0) && (fin_boucle_extraction == d_faux))
                         t1 = chaine_centrale[k];                      {
                         t2 = (k < 1) ? ' ' : chaine_centrale[k - 1];                          t0 = (k < ((integer8) strlen(chaine_centrale)))
                         t3 = (k < 2) ? ' ' : chaine_centrale[k - 2];                                  ? chaine_centrale[k + 1] : ' ';
                         t4 = (k < 3) ? ' ' : chaine_centrale[k - 3];                          t1 = chaine_centrale[k];
                           t2 = (k < 1) ? ' ' : chaine_centrale[k - 1];
                         if ((t0 >= 'a') && (t0 <= 'z'))                          t3 = (k < 2) ? ' ' : chaine_centrale[k - 2];
                         {                          t4 = (k < 3) ? ' ' : chaine_centrale[k - 3];
                             t0 = t0 + ('A' - 'a');  
                         }                          if ((t0 >= 'a') && (t0 <= 'z'))
                           {
                         if ((t1 >= 'a') && (t1 <= 'z'))                              t0 = t0 + ('A' - 'a');
                         {                          }
                             t1 = t1 + ('A' - 'a');  
                         }                          if ((t1 >= 'a') && (t1 <= 'z'))
                           {
                         if ((t2 >= 'a') && (t2 <= 'z'))                              t1 = t1 + ('A' - 'a');
                         {                          }
                             t2 = t2 + ('A' - 'a');  
                         }                          if ((t2 >= 'a') && (t2 <= 'z'))
                           {
                         if ((t3 >= 'a') && (t3 <= 'z'))                              t2 = t2 + ('A' - 'a');
                         {                          }
                             t3 = t3 + ('A' - 'a');  
                         }                          if ((t3 >= 'a') && (t3 <= 'z'))
                           {
                         if ((t4 >= 'a') && (t4 <= 'z'))                              t3 = t3 + ('A' - 'a');
                         {                          }
                             t4 = t4 + ('A' - 'a');  
                         }                          if ((t4 >= 'a') && (t4 <= 'z'))
                           {
                         if (t1 == '(')                              t4 = t4 + ('A' - 'a');
                         {                          }
                             niveau++;  
                         }                          if (t1 == '(')
                           {
                         if (niveau == 0)                              niveau++;
                         {                          }
                             prologue = purification_chaine(  
                                     extraction_chaine(chaine_centrale, 1, k));                          if (niveau == 0)
                             epilogue = purification_chaine(                          {
                                     extraction_chaine(chaine_centrale,                              prologue = purification_chaine(
                                     k + 2, longueur_chaine));                                      extraction_chaine(chaine_centrale, 1, k));
                               epilogue = purification_chaine(
                             if ((prologue == NULL) || (epilogue == NULL))                                      extraction_chaine(chaine_centrale,
                             {                                      k + 2, longueur_chaine));
                                 (*s_etat_processus).erreur_systeme =  
                                         d_es_allocation_memoire;                              if ((prologue == NULL) || (epilogue == NULL))
                                 return(NULL);                              {
                             }                                  (*s_etat_processus).erreur_systeme =
                                           d_es_allocation_memoire;
     /*                                  return(NULL);
      * Priorité = 1 : traitement des fonctions les plus prioritaires                              }
      */  
       /*
                             if (((priorite == 4) && (((t1 == '<') && (t0 != '=')       * Priorité = 1 : traitement des fonctions les plus prioritaires
                                     && (t2 != '=')) || ((t1 == '>') &&       */
                                     (t0 != '=') && (t2 != '=')) ||  
                                     ((t1 == '=') && (t0 != '=') && (t0 != '<')                              if (((priorite == 4) && (((t1 == '<') && (t0 != '=')
                                     && (t0 != '>') && (t2 != '<') && (t2 != '>')                                      && (t2 != '=')) || ((t1 == '>') &&
                                     && (t2 != '=')))) ||                                      (t0 != '=') && (t2 != '=')) ||
                                     ((t1 == '+') && (priorite == 5) &&                                      ((t1 == '=') && (t0 != '=') && (t0 != '<')
                                     (t2 != '\'') && (!(((t2 == '(')                                      && (t0 != '>') && (t2 != '<') && (t2 != '>')
                                     || (t2 == '\'') || (t2 == 'e')                                      && (t2 != '=')))) ||
                                     || (t2 == 'E')) && (((t3 >= '0')                                      ((t1 == '+') && (priorite == 5) &&
                                     && (t3 <= '9')) || (t3 == '.'))))) ||                                      (t2 != '\'') && (!(((t2 == '(')
                                     ((t1 == '-') && (priorite == 6) &&                                      || (t2 == '\'') || (t2 == 'e')
                                     (t2 != '\'') && (!(((t2 == '(')                                      || (t2 == 'E')) && (((t3 >= '0')
                                     || (t2 == '\'') || (t2 == 'e')                                      && (t3 <= '9')) || (t3 == '.'))))) ||
                                     || (t2 == 'E')) && (((t3 >= '0')                                      ((t1 == '-') && (priorite == 6) &&
                                     && (t3 <= '9')) || (t3 == '.')))))                                      (t2 != '\'') && (!(((t2 == '(')
                                     || ((t1 == '*') && (priorite == 7))                                      || (t2 == '\'') || (t2 == 'e')
                                     || ((t1 == '/') && (priorite == 8)) ||                                      || (t2 == 'E')) && (((t3 >= '0')
                                     ((t1 == '^') && (priorite == 9)))                                      && (t3 <= '9')) || (t3 == '.')))))
                             {                                      || ((t1 == '*') && (priorite == 7))
                                 drapeau_priorite_entierement_traitee = d_faux;                                      || ((t1 == '/') && (priorite == 8)) ||
                                 fin_boucle_extraction = d_vrai;                                      ((t1 == '^') && (priorite == 9)))
                               {
                                 free(tampon);                                  drapeau_priorite_entierement_traitee = d_faux;
                                   fin_boucle_extraction = d_vrai;
                                 if ((tampon = (unsigned char *)  
                                         malloc((strlen(prologue) +                                  free(tampon);
                                         strlen(epilogue) + 6) *  
                                         sizeof(unsigned char))) == NULL)                                  if ((tampon = (unsigned char *)
                                 {                                          malloc((strlen(prologue) +
                                     (*s_etat_processus).erreur_systeme =                                          strlen(epilogue) + 6) *
                                             d_es_allocation_memoire;                                          sizeof(unsigned char))) == NULL)
                                     return(NULL);                                  {
                                 }                                      (*s_etat_processus).erreur_systeme =
                                               d_es_allocation_memoire;
                                 sprintf(tampon, "%s' '%s %c",                                      return(NULL);
                                         prologue, epilogue, t1);                                  }
                                 drapeau_modification = d_vrai;  
                             }                                  sprintf(tampon, "%s' '%s %c",
                             else if (((priorite == 4) && (((t1 == '<') &&                                          prologue, epilogue, t1);
                                     (t2 == '=')) || ((t1 == '=') &&                                  drapeau_modification = d_vrai;
                                     (t2 == '<')) || ((t1 == '>') &&                              }
                                     (t2 == '<')) || (((t1 == '>') &&                              else if (((priorite == 4) && (((t1 == '<') &&
                                     (t2 == '=')) || ((t1 == '=') &&                                      (t2 == '=')) || ((t1 == '=') &&
                                     (t2 == '>')) || ((t1 == '=') &&                                      (t2 == '<')) || ((t1 == '>') &&
                                     (t2 == '='))))) || ((priorite == 1) &&                                      (t2 == '<')) || (((t1 == '>') &&
                                     (t1 == 'R') && (t2 == 'O') && (t3 == ' ')                                      (t2 == '=')) || ((t1 == '=') &&
                                     && (t0 == ' ')))                                      (t2 == '>')) || ((t1 == '=') &&
                             {                                      (t2 == '='))))) || ((priorite == 1) &&
                                 drapeau_priorite_entierement_traitee = d_faux;                                      (t1 == 'R') && (t2 == 'O') && (t3 == ' ')
                                 fin_boucle_extraction = d_vrai;                                      && (t0 == ' ')))
                               {
                                 free(tampon);                                  drapeau_priorite_entierement_traitee = d_faux;
                                   fin_boucle_extraction = d_vrai;
                                 if ((tampon = (unsigned char *)  
                                         malloc((strlen(prologue) +                                  free(tampon);
                                         strlen(epilogue) + 6) *  
                                         sizeof(unsigned char))) == NULL)                                  if ((tampon = (unsigned char *)
                                 {                                          malloc((strlen(prologue) +
                                     (*s_etat_processus).erreur_systeme =                                          strlen(epilogue) + 6) *
                                             d_es_allocation_memoire;                                          sizeof(unsigned char))) == NULL)
                                     return(NULL);                                  {
                                 }                                      (*s_etat_processus).erreur_systeme =
                                               d_es_allocation_memoire;
                                 prologue[strlen(prologue) - 1] =                                      return(NULL);
                                         d_code_fin_chaine;                                  }
   
                                 sprintf(tampon, "%s' '%s %c%c", prologue,                                  prologue[strlen(prologue) - 1] =
                                         epilogue, t2, t1);                                          d_code_fin_chaine;
                                 drapeau_modification = d_vrai;  
                             }                                  sprintf(tampon, "%s' '%s %c%c", prologue,
                             else if (((priorite == 1) && (t4 == ' ') &&                                          epilogue, t2, t1);
                                     (t3 == 'X') && (t2 == 'O') && (t1 == 'R')                                  drapeau_modification = d_vrai;
                                     && (t0 == ' ')) || ((priorite == 2) &&                              }
                                     (t4 == ' ') && (t3 == 'A') && (t2 == 'N')                              else if (((priorite == 1) && (t4 == ' ') &&
                                     && (t1 == 'D') && (t0 == ' ')))                                      (t3 == 'X') && (t2 == 'O') && (t1 == 'R')
                             {                                      && (t0 == ' ')) || ((priorite == 2) &&
                                 drapeau_priorite_entierement_traitee = d_faux;                                      (t4 == ' ') && (t3 == 'A') && (t2 == 'N')
                                 fin_boucle_extraction = d_vrai;                                      && (t1 == 'D') && (t0 == ' ')))
                               {
                                 free(tampon);                                  drapeau_priorite_entierement_traitee = d_faux;
                                   fin_boucle_extraction = d_vrai;
                                 if ((tampon = (unsigned char *)  
                                         malloc((strlen(prologue) +                                  free(tampon);
                                         strlen(epilogue) + 5) *  
                                         sizeof(unsigned char))) == NULL)                                  if ((tampon = (unsigned char *)
                                 {                                          malloc((strlen(prologue) +
                                     (*s_etat_processus).erreur_systeme =                                          strlen(epilogue) + 5) *
                                             d_es_allocation_memoire;                                          sizeof(unsigned char))) == NULL)
                                     return(NULL);                                  {
                                 }                                      (*s_etat_processus).erreur_systeme =
                                               d_es_allocation_memoire;
                                 prologue[strlen(prologue) - 3] =                                      return(NULL);
                                         d_code_fin_chaine;                                  }
   
                                 sprintf(tampon, "%s' '%s %c%c%c", prologue,                                  prologue[strlen(prologue) - 3] =
                                         epilogue, t3, t2, t1);                                          d_code_fin_chaine;
                                 drapeau_modification = d_vrai;  
                             }                                  sprintf(tampon, "%s' '%s %c%c%c", prologue,
                                           epilogue, t3, t2, t1);
                             free(prologue);                                  drapeau_modification = d_vrai;
                             free(epilogue);                              }
                         }  
                               free(prologue);
                         if (t1 == ')')                              free(epilogue);
                         {                          }
                             niveau--;  
                         }                          if (t1 == ')')
                           {
                         k--;                              niveau--;
                     }                          }
   
                     if (drapeau_priorite_entierement_traitee == d_vrai)                          k--;
                     {                      }
                         free(tampon);  
                       if (drapeau_priorite_entierement_traitee == d_vrai)
                         if ((tampon = (unsigned char *) malloc(                      {
                                 (strlen(chaine_centrale) + 1) *                          free(tampon);
                                 sizeof(unsigned char))) == NULL)  
                         {                          if ((tampon = (unsigned char *) malloc(
                             (*s_etat_processus).erreur_systeme =                                  (strlen(chaine_centrale) + 1) *
                                     d_es_allocation_memoire;                                  sizeof(unsigned char))) == NULL)
                             return(NULL);                          {
                         }                              (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                         strcpy(tampon, chaine_centrale);                              return(NULL);
                     }                          }
   
                     free(chaine_centrale);                          strcpy(tampon, chaine_centrale);
                     free(chaine_travail);                      }
   
                     if ((chaine_travail = (unsigned char *) malloc(                      free(chaine_centrale);
                             (strlen(chaine_gauche) + strlen(tampon)                      free(chaine_travail);
                             + strlen(chaine_droite) + 1 + 2)  
                             * sizeof(unsigned char))) == NULL)                      if ((chaine_travail = (unsigned char *) malloc(
                     {                              (strlen(chaine_gauche) + strlen(tampon)
                         (*s_etat_processus).erreur_systeme =                              + strlen(chaine_droite) + 1 + 2)
                                 d_es_allocation_memoire;                              * sizeof(unsigned char))) == NULL)
                         return(NULL);                      {
                     }                          (*s_etat_processus).erreur_systeme =
                                   d_es_allocation_memoire;
                     sprintf(chaine_travail, "%s %s %s", chaine_gauche,                          return(NULL);
                             tampon, chaine_droite);                      }
   
                     free(chaine_gauche);                      sprintf(chaine_travail, "%s %s %s", chaine_gauche,
                     free(tampon);                              tampon, chaine_droite);
                     free(chaine_droite);  
                 }                      free(chaine_gauche);
                       free(tampon);
                 if (drapeau_priorite_entierement_traitee == d_vrai)                      free(chaine_droite);
                 {                  }
                     priorite++;  
                 }                  if (drapeau_priorite_entierement_traitee == d_vrai)
                 else                  {
                 {                      priorite++;
                     priorite = 1;                  }
                 }                  else
             } while(priorite < 10);                  {
                       priorite = 1;
             /*                  }
              * Aucune modification n'a pu être faite sur l'expression              } while(priorite < 10);
              * algébrique.  
              */              /*
                * Aucune modification n'a pu être faite sur l'expression
             if (drapeau_modification == d_faux)               * algébrique.
             {               */
                 free(chaine_travail);  
               if (drapeau_modification == d_faux)
                 (*s_etat_processus).erreur_execution = d_ex_syntaxe;              {
                 return(NULL);                  free(chaine_travail);
             }  
         }                  (*s_etat_processus).erreur_execution = d_ex_syntaxe;
     } while(nombre_apostrophes != 0);                  return(NULL);
               }
     tampon = chaine_travail;          }
       } while(nombre_apostrophes != 0);
     if ((chaine_travail = (unsigned char *) malloc((strlen(tampon) + 1 + 6) *  
             sizeof(unsigned char))) == NULL)      tampon = chaine_travail;
     {  
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;      if ((chaine_travail = (unsigned char *) malloc((strlen(tampon) + 1 + 6) *
         return(NULL);              sizeof(unsigned char))) == NULL)
     }      {
           (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
     sprintf(chaine_travail, "<< %s >>", tampon);          return(NULL);
     free(tampon);      }
   
     return(chaine_travail);      sprintf(chaine_travail, "<< %s >>", tampon);
 }      free(tampon);
   
       return(chaine_travail);
 unsigned char *  }
 purification_chaine(unsigned char *chaine)  
 {  
     long                        i;  unsigned char *
     long                        j;  purification_chaine(unsigned char *chaine)
   {
     unsigned char               *chaine_purifiee;      long                        i;
       long                        j;
     i = 0;  
     j = strlen(chaine) - 1;      unsigned char               *chaine_purifiee;
   
     while(chaine[i] == ' ')      i = 0;
     {      j = ((integer8) strlen(chaine)) - 1;
         if ((i++) > j)  
         {      while(chaine[i] == ' ')
             i = j;      {
             break;          if ((i++) > j)
         }          {
     }              i = j;
                  break;
     if (j >= 0)          }
     {      }
         while(chaine[j] == ' ')      
         {      if (j >= 0)
             if ((--j) < 0)      {
             {          while(chaine[j] == ' ')
                 j = 0;          {
                 break;              if ((--j) < 0)
             }              {
         }                  j = 0;
     }                  break;
               }
     chaine_purifiee = extraction_chaine(chaine, i + 1, j + 1);          }
     free(chaine);      }
   
     return(chaine_purifiee);      chaine_purifiee = extraction_chaine(chaine, i + 1, j + 1);
 }      free(chaine);
   
       return(chaine_purifiee);
 logical1  }
 test_expression_rpn(unsigned char *chaine)  
 {  
     long                    j;  logical1
   test_expression_rpn(unsigned char *chaine)
     unsigned char           t;  {
     unsigned char           t0;      long                    j;
     unsigned char           t1;  
     unsigned char           t2;      int                     t;
     unsigned char           t3;      int                     t0;
     unsigned char           t4;      int                     t1;
       int                     t2;
     unsigned long           compteur;      int                     t3;
     unsigned long           longueur_chaine;      int                     t4;
     unsigned long           i;  
     unsigned long           niveau;      integer8                compteur;
       integer8                longueur_chaine;
     /*      integer8                i;
      * On teste d'abord la chaîne pour vérifier qu'il n'y a pas de fonction      integer8                niveau;
      * utilisant la notation infixe.  
      */      /*
        * On teste d'abord la chaîne pour vérifier qu'il n'y a pas de fonction
     compteur = 0;       * utilisant la notation infixe.
        */
     for(longueur_chaine = strlen(chaine), i = 1; i < longueur_chaine; i++)  
     {      compteur = 0;
         /*  
          * On saute les chaînes de caractères      for(longueur_chaine = ((integer8) strlen(chaine)), i = 1;
          */              i < longueur_chaine; i++)
       {
         if (chaine[i - 1] == '"')          /*
         {           * On saute les chaînes de caractères
             i++;           */
             while(chaine[i - 1] != '"')  
             {          if (chaine[i - 1] == '"')
                 i++;          {
             }              i++;
         }              while(chaine[i - 1] != '"')
               {
         j = ((long) i) - 2;                  i++;
         t0 = (i >= 2) ? chaine[i - 2] : '?';              }
         t1 = chaine[i - 1];          }
         t2 = chaine[i];  
         t3 = ((i + 1) < strlen(chaine)) ? chaine[i + 1] : '?';          j = i - 2;
         t4 = ((i + 2) < strlen(chaine)) ? chaine[i + 2] : '?';          t0 = (i >= 2) ? chaine[i - 2] : '?';
           t1 = chaine[i - 1];
         /*          t2 = chaine[i];
          * Ouverture d'une parenthèse signalant une fonction          t3 = ((i + 1) < ((integer8) strlen(chaine))) ? chaine[i + 1] : '?';
          */          t4 = ((i + 2) < ((integer8) strlen(chaine))) ? chaine[i + 2] : '?';
   
         if ((t1 != '+') && (t1 != '-') && (t1 != '*') && (t1 != '/')          /*
                 && (t1 != '\'') && (t2 == '('))           * Ouverture d'une parenthèse signalant une fonction
         {           */
             niveau = 0;  
           if ((t1 != '+') && (t1 != '-') && (t1 != '*') && (t1 != '/')
             do                  && (t1 != '\'') && (t2 == '('))
             {          {
                 if ((t = chaine[i++]) == '(')              niveau = 0;
                 {  
                     niveau++;              do
                 }              {
                 else if (t == ')')                  if ((t = chaine[i++]) == '(')
                 {                  {
                     niveau--;                      niveau++;
                 }                  }
             } while(((niveau != 0) || (t != ')')) && (i < longueur_chaine));                  else if (t == ')')
                   {
             if (i < longueur_chaine)                      niveau--;
             {                  }
                 t2 = chaine[i];              } while(((niveau != 0) || (t != ')')) && (i < longueur_chaine));
             }  
             else              if (i < longueur_chaine)
             {              {
                 t2 = ' ';                  t2 = chaine[i];
             }              }
         }              else
               {
         /*                  t2 = ' ';
          * Signalement de l'une des quatre opérations et des fonctions              }
          * infixes traditionnelles          }
          */  
           /*
         if ((t2 == '+') || (t2 == '-') || (t2 == '*') || (t2 == '/')           * Signalement de l'une des quatre opérations et des fonctions
                 || (t2 == '^') || (t2 == '<') || (t2 == '>') || (t2 == '=')           * infixes traditionnelles
                 || ((t0 == ' ') && ((t1 == 'A') || (t1 == 'a')) &&           */
                 ((t2 == 'N') || (t2 == 'n')) && ((t3 == 'D') || (t3 == 'd'))  
                 && (t4 == ' ')) ||          if ((t2 == '+') || (t2 == '-') || (t2 == '*') || (t2 == '/')
                 ((t0 == ' ') && ((t1 == 'O') || (t1 == 'o')) &&                  || (t2 == '^') || (t2 == '<') || (t2 == '>') || (t2 == '=')
                 ((t2 == 'R') || (t2 == 'r')) && (t3 == ' ')) ||                  || ((t0 == ' ') && ((t1 == 'A') || (t1 == 'a')) &&
                 ((t0 == ' ') && ((t1 == 'X') || (t1 == 'x')) &&                  ((t2 == 'N') || (t2 == 'n')) && ((t3 == 'D') || (t3 == 'd'))
                 ((t2 == 'O') || (t2 == 'o')) && ((t3 == 'R') || (t3 == 'r'))                  && (t4 == ' ')) ||
                 && (t4 == ' ')))                  ((t0 == ' ') && ((t1 == 'O') || (t1 == 'o')) &&
         {                  ((t2 == 'R') || (t2 == 'r')) && (t3 == ' ')) ||
             compteur++;                  ((t0 == ' ') && ((t1 == 'X') || (t1 == 'x')) &&
         }                  ((t2 == 'O') || (t2 == 'o')) && ((t3 == 'R') || (t3 == 'r'))
                   && (t4 == ' ')))
         /*          {
          * Signalement d'un nombre              compteur++;
          */          }
   
         if (((t2 == '+') || (t2 == '-')) && ((t1 == '(')          /*
                 || ((t1 == 'e') || (t1 == 'E') || (t1 == '\'')))           * Signalement d'un nombre
                 && (((t0 >= '0') && (t0 <= '9')) || (t0 == '.')))           */
         {  
             compteur--;          if (((t2 == '+') || (t2 == '-')) && ((t1 == '(')
         }                  || ((t1 == 'e') || (t1 == 'E') || (t1 == '\'')))
         else if (((t2 == '+') || (t2 == '-')) && (t1 == '\'') && (j < 0)                  && (((t0 >= '0') && (t0 <= '9')) || (t0 == '.')))
                 && (((t3 >= '0') && (t3 <= '9')) || (t3 == '.')))          {
         {              compteur--;
             compteur--;          }
         }          else if (((t2 == '+') || (t2 == '-')) && (t1 == '\'') && (j < 0)
     }                  && (((t3 >= '0') && (t3 <= '9')) || (t3 == '.')))
           {
     return(((compteur == 0) && (test_fonction(chaine) == d_faux))              compteur--;
             ? d_vrai : d_faux);          }
 }      }
   
       return(((compteur == 0) && (test_fonction(chaine) == d_faux))
 logical1              ? d_vrai : d_faux);
 test_fonction(unsigned char *chaine)  }
 {  
     logical1                drapeau_fonction;  
   logical1
     unsigned char           t;  test_fonction(unsigned char *chaine)
   {
     unsigned long           compteur;      logical1                drapeau_fonction;
     unsigned long           i;  
     unsigned long           longueur_chaine;      int                     t;
   
     longueur_chaine = strlen(chaine);      integer8                compteur;
     i = 1;      integer8                i;
       integer8                longueur_chaine;
     while(((t = chaine[i]) != '(') && (i < (longueur_chaine - 1)))  
     {      longueur_chaine = (integer8) strlen(chaine);
         if ((t == '+') || (t == '-') || (t == '*') ||      i = 1;
                 (t == '/') || (t == '^') || (t == '>') || (t == '<') ||  
                 (t == '='))      while(((t = chaine[i]) != '(') && (i < (longueur_chaine - 1)))
         {      {
             i = longueur_chaine - 1;          if ((t == '+') || (t == '-') || (t == '*') ||
         }                  (t == '/') || (t == '^') || (t == '>') || (t == '<') ||
         else                  (t == '='))
         {          {
             i++;              i = longueur_chaine - 1;
         }          }
     }          else
           {
     compteur = 1;              i++;
     drapeau_fonction = ((i < (longueur_chaine - 1)) && (i != 1))          }
             ? d_vrai : d_faux;      }
   
     for(i++; i < (longueur_chaine - 2); i++)      compteur = 1;
     {      drapeau_fonction = ((i < (longueur_chaine - 1)) && (i != 1))
         if ((t = chaine[i]) == '(')              ? d_vrai : d_faux;
         {  
             compteur++;      for(i++; i < (longueur_chaine - 2); i++)
         }      {
         else if (t == ')')          if ((t = chaine[i]) == '(')
         {          {
             compteur--;              compteur++;
         }          }
           else if (t == ')')
         if (compteur == 0)          {
         {              compteur--;
             drapeau_fonction = d_faux;          }
         }  
     }          if (compteur == 0)
           {
     return drapeau_fonction;              drapeau_fonction = d_faux;
 }          }
       }
   
 unsigned char *      return drapeau_fonction;
 extraction_chaine(unsigned char *chaine, unsigned long position_1,  }
         unsigned long position_2)  
 {  
     long                    i;  unsigned char *
   extraction_chaine(unsigned char *chaine, integer8 position_1,
     unsigned char           *pointeur_ecriture;          integer8 position_2)
     unsigned char           *pointeur_lecture;  {
     unsigned char           *sous_chaine;      integer8                i;
   
     if ((position_1 < 1) || (position_2 < position_1) ||      unsigned char           *pointeur_ecriture;
             (position_2 > strlen(chaine)))      unsigned char           *pointeur_lecture;
     {      unsigned char           *sous_chaine;
         if ((sous_chaine = (unsigned char *) malloc(sizeof(unsigned char)))  
                 == NULL)      if ((position_1 < 1) || (position_2 < position_1) ||
         {              (position_1 > ((integer8) strlen(chaine))))
             return(NULL);      {
         }          if ((sous_chaine = (unsigned char *) malloc(sizeof(unsigned char)))
                   == NULL)
         (*sous_chaine) = d_code_fin_chaine;          {
         return(sous_chaine);              return(NULL);
     }          }
   
     if ((sous_chaine = (unsigned char *)          (*sous_chaine) = d_code_fin_chaine;
             malloc((position_2 - position_1 + 2) * sizeof(unsigned char)))          return(sous_chaine);
             == NULL)      }
     {  
         return(NULL);      if (position_2 > ((integer8) strlen(chaine)))
     }      {
           if ((sous_chaine = (unsigned char *) malloc(sizeof(unsigned char)))
     pointeur_lecture = &(chaine[position_1 - 1]);                  == NULL)
     pointeur_ecriture = sous_chaine;          {
               return(NULL);
     for(sous_chaine[i = position_2 - position_1 + 1] = 0; (--i) >= 0;          }
             *(pointeur_ecriture++) = *(pointeur_lecture++));  
           (*sous_chaine) = d_code_fin_chaine;
     return(sous_chaine);          return(sous_chaine);
 }      }
   
 // vim: ts=4      if ((sous_chaine = (unsigned char *)
               malloc(((size_t) (position_2 - position_1 + 2)) *
               sizeof(unsigned char))) == NULL)
       {
           return(NULL);
       }
   
       pointeur_lecture = &(chaine[position_1 - 1]);
       pointeur_ecriture = sous_chaine;
   
       for(sous_chaine[i = position_2 - position_1 + 1] = 0; (--i) >= 0;
               *(pointeur_ecriture++) = *(pointeur_lecture++));
   
       return(sous_chaine);
   }
   
   // vim: ts=4

Removed from v.1.16  
changed lines
  Added in v.1.43


CVSweb interface <joel.bertrand@systella.fr>