Diff for /rpl/src/evaluation.c between versions 1.12 and 1.17

version 1.12, 2010/04/20 12:49:18 version 1.17, 2010/05/24 10:58:29
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.14    RPL/2 (R) version 4.0.16
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2010 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 829  evaluation(struct_processus *s_etat_proc Line 829  evaluation(struct_processus *s_etat_proc
   
                             free(message);                              free(message);
   
                             while((*(*s_etat_processus).l_base_pile_systeme)                              drapeau_then = d_faux;
                                     .clause != 'R')  
                               while(drapeau_then == d_faux)
                             {                              {
                                 l_registre_atome = l_element_courant;                                  l_registre_atome = l_element_courant;
                                 l_element_courant =                                  l_element_courant =
Line 992  evaluation(struct_processus *s_etat_proc Line 993  evaluation(struct_processus *s_etat_proc
                                                 }                                                  }
                                             }                                              }
                                         }                                          }
                                           else if (TEST(instruction_then))
                                           {
                                               if ((*(*s_etat_processus)
                                                       .l_base_pile_systeme)
                                                       .clause == 'R')
                                               {
                                                   (*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .clause = 'X';
                                                   instruction_then(
                                                           s_etat_processus);
                                                   drapeau_then = d_vrai;
                                               }
                                           }
                                     }                                      }
                                 }                                  }
                             }                              }
   
                               (*s_etat_processus).expression_courante =
                                       l_element_courant;
                             (*s_etat_processus).instruction_courante =                              (*s_etat_processus).instruction_courante =
                                     instruction_courante;                                      instruction_courante;
                             drapeau_then = d_faux;  
   
                             do  
                             {  
                                 l_registre_atome = l_element_courant;  
   
                                 if (l_element_courant == NULL)  
                                 {  
                                     /*  
                                      * La fin de l'expression est atteinte,  
                                      * le sequenceur reprend la main.  
                                      */  
   
                                     if (presence_egalite == d_vrai)  
                                     {  
                                         liberation(s_etat_processus,  
                                                 s_objet_evalue);  
                                     }  
   
                                     (*s_etat_processus)  
                                             .mode_execution_programme =  
                                             registre_mode_execution_programme;  
                                     (*s_etat_processus).instruction_courante =  
                                             instruction_courante;  
                                     return(d_absence_erreur);  
                                 }  
   
                                 if ((*(*l_element_courant).donnee).type == FCT)  
                                 {  
                                     (*s_etat_processus)  
                                             .instruction_courante =  
                                             (*((struct_fonction *)  
                                             (*(*l_element_courant).donnee)  
                                             .objet)).nom_fonction;  
                                     fonction = (*((struct_fonction *)  
                                             (*(*l_element_courant).donnee)  
                                             .objet)).fonction;  
                                     (*s_etat_processus).instruction_courante =  
                                             instruction_courante;  
   
                                     drapeau_then = TEST(instruction_then)  
                                             ? d_vrai : d_faux;  
                                 }  
   
                                 l_element_courant = (*l_element_courant)  
                                         .suivant;  
                             } while(drapeau_then == d_faux);  
   
                             (*s_etat_processus).expression_courante =  
                                     l_registre_atome;  
   
                             (*(*s_etat_processus).l_base_pile_systeme)  
                                     .clause = 'X';  
                             instruction_then(s_etat_processus);  
   
                             (*s_etat_processus).exception = d_ep;                              (*s_etat_processus).exception = d_ep;
                             (*s_etat_processus).erreur_execution = d_ex;                              (*s_etat_processus).erreur_execution = d_ex;
Line 1305  evaluation(struct_processus *s_etat_proc Line 1268  evaluation(struct_processus *s_etat_proc
                                                         instruction_courante;                                                          instruction_courante;
                                                     return(d_erreur);                                                      return(d_erreur);
                                                 }                                                  }
   
                                                   if ((*(*s_etat_processus)
                                                           .l_base_pile_systeme)
                                                           .retour_definition
                                                           == 'Y')
                                                   {
                                                       break;
                                                   }
                                             }                                              }
                                             else                                              else
                                             {                                              {
Line 4816  evaluation(struct_processus *s_etat_proc Line 4787  evaluation(struct_processus *s_etat_proc
   
                                     (*(*s_etat_processus).l_base_pile_systeme)                                      (*(*s_etat_processus).l_base_pile_systeme)
                                             .niveau_courant =                                              .niveau_courant =
                                               registre_niveau_courant;
                                     (*(*s_etat_processus).l_base_pile_systeme)                                      (*(*s_etat_processus).l_base_pile_systeme)
                                             .retour_definition =                                              .retour_definition =
                                             registre_retour_definition;                                              registre_retour_definition;
Line 4846  evaluation(struct_processus *s_etat_proc Line 4818  evaluation(struct_processus *s_etat_proc
   
                                 (*(*s_etat_processus).l_base_pile_systeme)                                  (*(*s_etat_processus).l_base_pile_systeme)
                                         .niveau_courant =                                          .niveau_courant =
                                           registre_niveau_courant;
                                 (*(*s_etat_processus).l_base_pile_systeme)                                  (*(*s_etat_processus).l_base_pile_systeme)
                                         .retour_definition =                                          .retour_definition =
                                         registre_retour_definition;                                          registre_retour_definition;

Removed from v.1.12  
changed lines
  Added in v.1.17


CVSweb interface <joel.bertrand@systella.fr>