Diff for /rpl/src/evaluation.c between versions 1.59 and 1.60

version 1.59, 2012/10/01 11:05:00 version 1.60, 2012/10/04 15:21:25
Line 585  evaluation(struct_processus *s_etat_proc Line 585  evaluation(struct_processus *s_etat_proc
     }      }
     else if (((*s_objet).type == RPN) || ((*s_objet).type == ALG))      else if (((*s_objet).type == RPN) || ((*s_objet).type == ALG))
     {      {
           // Ajout d'un bouchon à la liste des variables statiques pour
           // savoir quelles sont les variables statiques qui ont été créées
           // par l'évaluation de l'expression et qui sont susceptibles
           // de devoir être éliminées.
   
           if (ajout_bouchon_variable_statique(s_etat_processus) == d_erreur)
           {
               (*s_etat_processus).instruction_courante = instruction_courante;
               (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
               return(d_erreur);
           }
   
         l_element_courant = (struct_liste_chainee *) (*s_objet).objet;          l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
         l_element_egalite = NULL;          l_element_egalite = NULL;
         presence_egalite = d_faux;          presence_egalite = d_faux;
Line 1147  evaluation(struct_processus *s_etat_proc Line 1159  evaluation(struct_processus *s_etat_proc
                                                         .niveau_courant--;                                                          .niveau_courant--;
   
                                                     if (                                                      if (
                                                     retrait_variable_par_niveau(                                                  retrait_variables_par_niveau(
                                                     s_etat_processus) ==                                                  s_etat_processus) == d_erreur)
                                                     d_erreur)  
                                                     {                                                      {
                                                         if (presence_egalite ==                                                          if (presence_egalite ==
                                                                 d_vrai)                                                                  d_vrai)
Line 1514  evaluation(struct_processus *s_etat_proc Line 1525  evaluation(struct_processus *s_etat_proc
                                                         .niveau_courant--;                                                          .niveau_courant--;
   
                                                     if (                                                      if (
                                                     retrait_variable_par_niveau(                                                  retrait_variables_par_niveau(
                                                     s_etat_processus) ==                                                  s_etat_processus) == d_erreur)
                                                     d_erreur)  
                                                     {                                                      {
                                                         if (presence_egalite ==                                                          if (presence_egalite ==
                                                                 d_vrai)                                                                  d_vrai)
Line 1900  evaluation(struct_processus *s_etat_proc Line 1910  evaluation(struct_processus *s_etat_proc
                                                         .niveau_courant--;                                                          .niveau_courant--;
   
                                                     if (                                                      if (
                                                     retrait_variable_par_niveau(                                                  retrait_variables_par_niveau(
                                                     s_etat_processus) ==                                                  s_etat_processus) == d_erreur)
                                                     d_erreur)  
                                                     {                                                      {
                                                         if (presence_egalite ==                                                          if (presence_egalite ==
                                                                 d_vrai)                                                                  d_vrai)
Line 4140  evaluation(struct_processus *s_etat_proc Line 4149  evaluation(struct_processus *s_etat_proc
                                                         .niveau_courant--;                                                          .niveau_courant--;
   
                                                     if (                                                      if (
                                                     retrait_variable_par_niveau(                                                  retrait_variables_par_niveau(
                                                     s_etat_processus) ==                                                  s_etat_processus) == d_erreur)
                                                     d_erreur)  
                                                     {                                                      {
                                                         if (presence_egalite ==                                                          if (presence_egalite ==
                                                                 d_vrai)                                                                  d_vrai)
Line 4548  evaluation(struct_processus *s_etat_proc Line 4556  evaluation(struct_processus *s_etat_proc
                                                         .niveau_courant--;                                                          .niveau_courant--;
   
                                                     if (                                                      if (
                                                     retrait_variable_par_niveau(                                                  retrait_variables_par_niveau(
                                                     s_etat_processus) ==                                                  s_etat_processus) == d_erreur)
                                                     d_erreur)  
                                                     {                                                      {
                                                         if (presence_egalite ==                                                          if (presence_egalite ==
                                                                 d_vrai)                                                                  d_vrai)
Line 4922  evaluation(struct_processus *s_etat_proc Line 4929  evaluation(struct_processus *s_etat_proc
                                                         .niveau_courant--;                                                          .niveau_courant--;
   
                                                     if (                                                      if (
                                                     retrait_variable_par_niveau(                                                  retrait_variables_par_niveau(
                                                     s_etat_processus) ==                                                  s_etat_processus) == d_erreur)
                                                     d_erreur)  
                                                     {                                                      {
                                                         if (presence_egalite ==                                                          if (presence_egalite ==
                                                                 d_vrai)                                                                  d_vrai)
Line 5393  evaluation(struct_processus *s_etat_proc Line 5399  evaluation(struct_processus *s_etat_proc
                                                         .niveau_courant--;                                                          .niveau_courant--;
   
                                                     if (                                                      if (
                                                     retrait_variable_par_niveau(                                                  retrait_variables_par_niveau(
                                                     s_etat_processus) ==                                                  s_etat_processus) == d_erreur)
                                                     d_erreur)  
                                                     {                                                      {
                                                         if (presence_egalite ==                                                          if (presence_egalite ==
                                                                 d_vrai)                                                                  d_vrai)
Line 5801  evaluation(struct_processus *s_etat_proc Line 5806  evaluation(struct_processus *s_etat_proc
                                                         .niveau_courant--;                                                          .niveau_courant--;
   
                                                     if (                                                      if (
                                                     retrait_variable_par_niveau(                                                  retrait_variables_par_niveau(
                                                     s_etat_processus) ==                                                  s_etat_processus) == d_erreur)
                                                     d_erreur)  
                                                     {                                                      {
                                                         if (presence_egalite ==                                                          if (presence_egalite ==
                                                                 d_vrai)                                                                  d_vrai)
Line 6175  evaluation(struct_processus *s_etat_proc Line 6179  evaluation(struct_processus *s_etat_proc
                                                         .niveau_courant--;                                                          .niveau_courant--;
   
                                                     if (                                                      if (
                                                     retrait_variable_par_niveau(                                                  retrait_variables_par_niveau(
                                                     s_etat_processus) ==                                                  s_etat_processus) == d_erreur)
                                                     d_erreur)  
                                                     {                                                      {
                                                         if (presence_egalite ==                                                          if (presence_egalite ==
                                                                 d_vrai)                                                                  d_vrai)
Line 7179  evaluation(struct_processus *s_etat_proc Line 7182  evaluation(struct_processus *s_etat_proc
   
             (*s_etat_processus).niveau_courant = niveau_initial;              (*s_etat_processus).niveau_courant = niveau_initial;
   
             if (retrait_variable_par_niveau(s_etat_processus) == d_erreur)              if (retrait_variables_par_niveau(s_etat_processus) == d_erreur)
             {              {
                   if (presence_egalite == d_vrai)
                   {
                       liberation(s_etat_processus, s_objet_evalue);
                   }
   
                   (*s_etat_processus).instruction_courante =
                           instruction_courante;
                   (*s_etat_processus).mode_execution_programme =
                           registre_mode_execution_programme;
                 return(d_erreur);                  return(d_erreur);
             }              }
         }          }
Line 7189  evaluation(struct_processus *s_etat_proc Line 7201  evaluation(struct_processus *s_etat_proc
          * Retrait des variables statiques créées dans l'expression           * Retrait des variables statiques créées dans l'expression
          */           */
   
         for(n = 0; n < (*s_etat_processus).nombre_variables_statiques; n++)          if (retrait_variables_statiques(s_etat_processus) == d_erreur)
         {          {
             if ((*s_etat_processus).s_liste_variables_statiques[n]              if (presence_egalite == d_vrai)
                     .niveau > (*s_etat_processus).niveau_courant)  
             {              {
                 if (retrait_variable_statique(s_etat_processus,                  liberation(s_etat_processus, s_objet_evalue);
                         (*s_etat_processus).s_liste_variables_statiques[n].nom,  
                         (*s_etat_processus).s_liste_variables_statiques[n]  
                         .variable_statique) == d_erreur)  
                 {  
                     if (presence_egalite == d_vrai)  
                     {  
                         liberation(s_etat_processus, s_objet_evalue);  
                     }  
   
                     (*s_etat_processus).instruction_courante =  
                             instruction_courante;  
                     (*s_etat_processus).mode_execution_programme =  
                             registre_mode_execution_programme;  
                     return(d_erreur);  
                 }  
             }              }
   
               (*s_etat_processus).instruction_courante =
                       instruction_courante;
               (*s_etat_processus).mode_execution_programme =
                       registre_mode_execution_programme;
               return(d_erreur);
         }          }
   
         /*          /*

Removed from v.1.59  
changed lines
  Added in v.1.60


CVSweb interface <joel.bertrand@systella.fr>