Diff for /rpl/src/evaluation.c between versions 1.72 and 1.77

version 1.72, 2013/03/05 21:02:35 version 1.77, 2013/04/17 13:53:17
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.13    RPL/2 (R) version 4.1.14
   Copyright (C) 1989-2013 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 48  evaluation(struct_processus *s_etat_proc Line 48  evaluation(struct_processus *s_etat_proc
 {  {
     integer8                        i;      integer8                        i;
     integer8                        j;      integer8                        j;
       integer8                        k;
       integer8                        l;
       integer8                        niveau_initial;
       integer8                        nombre_termes;
       integer8                        registre_hauteur_pile_operationnelle;
       integer8                        registre_position_courante;
   
   
     logical1                        drapeau_then;      logical1                        drapeau_then;
     logical1                        erreur_evaluation;      logical1                        erreur_evaluation;
Line 84  evaluation(struct_processus *s_etat_proc Line 91  evaluation(struct_processus *s_etat_proc
     unsigned char                   registre_evaluation_forcee;      unsigned char                   registre_evaluation_forcee;
     unsigned char                   registre_instruction_valide;      unsigned char                   registre_instruction_valide;
     unsigned char                   registre_mode_execution_programme;      unsigned char                   registre_mode_execution_programme;
     unsigned char                   registre_retour_definition;  
     unsigned char                   registre_test;      unsigned char                   registre_test;
     unsigned char                   registre_test_2;      unsigned char                   registre_test_2;
     unsigned char                   registre_type_evaluation;      unsigned char                   registre_type_evaluation;
   
     unsigned int                    registre_erreur_execution;      int                             registre_erreur_execution;
     unsigned int                    registre_erreur_systeme;      int                             registre_erreur_systeme;
     unsigned int                    registre_exception;      int                             registre_exception;
   
     unsigned long                   k;  
     unsigned long                   l;  
     unsigned long                   niveau_initial;  
     unsigned long                   nombre_termes;  
     unsigned long                   registre_hauteur_pile_operationnelle;  
     unsigned long                   registre_position_courante;  
   
     void                            (*fonction)();      void                            (*fonction)();
   
Line 291  evaluation(struct_processus *s_etat_proc Line 290  evaluation(struct_processus *s_etat_proc
                 if (presence_variable_partagee == d_faux)                  if (presence_variable_partagee == d_faux)
                 {                  {
                     (*s_etat_processus).position_courante =                      (*s_etat_processus).position_courante =
                             (*((unsigned long *) ((*(*(*s_etat_processus)                              (*((integer8 *) ((*(*(*s_etat_processus)
                             .pointeur_variable_courante).objet).objet)));                              .pointeur_variable_courante).objet).objet)));
                 }                  }
                 else                  else
                 {                  {
                     (*s_etat_processus).position_courante =                      (*s_etat_processus).position_courante =
                             (*((unsigned long *) (*s_copie_variable_partagee)                              (*((integer8 *) (*s_copie_variable_partagee)
                             .objet));                              .objet));
                     liberation(s_etat_processus, s_copie_variable_partagee);                      liberation(s_etat_processus, s_copie_variable_partagee);
                 }                  }
Line 324  evaluation(struct_processus *s_etat_proc Line 323  evaluation(struct_processus *s_etat_proc
   
                 if (sequenceur(s_etat_processus) == d_erreur)                  if (sequenceur(s_etat_processus) == d_erreur)
                 {                  {
                       depilement_pile_systeme(s_etat_processus);
   
                     (*s_etat_processus).evaluation_forcee =                      (*s_etat_processus).evaluation_forcee =
                             registre_evaluation_forcee;                              registre_evaluation_forcee;
                     (*s_etat_processus).mode_execution_programme =                      (*s_etat_processus).mode_execution_programme =
Line 409  evaluation(struct_processus *s_etat_proc Line 410  evaluation(struct_processus *s_etat_proc
                         .niveau_courant = (*s_etat_processus)                          .niveau_courant = (*s_etat_processus)
                         .niveau_courant;                          .niveau_courant;
   
                 empilement_pile_systeme(s_etat_processus);  
   
                 if (presence_variable_partagee == d_faux)                  if (presence_variable_partagee == d_faux)
                 {                  {
                     if (evaluation(s_etat_processus, (*(*s_etat_processus)                      if (evaluation(s_etat_processus, (*(*s_etat_processus)
Line 422  evaluation(struct_processus *s_etat_proc Line 421  evaluation(struct_processus *s_etat_proc
                             profilage(s_etat_processus, NULL);                              profilage(s_etat_processus, NULL);
                         }                          }
   
                           depilement_pile_systeme(s_etat_processus);
   
                         (*s_etat_processus).evaluation_expression_compilee =                          (*s_etat_processus).evaluation_expression_compilee =
                                 registre_evaluation_expression_compilee;                                  registre_evaluation_expression_compilee;
   
Line 444  evaluation(struct_processus *s_etat_proc Line 445  evaluation(struct_processus *s_etat_proc
                             profilage(s_etat_processus, NULL);                              profilage(s_etat_processus, NULL);
                         }                          }
   
                           depilement_pile_systeme(s_etat_processus);
   
                         (*s_etat_processus).evaluation_expression_compilee =                          (*s_etat_processus).evaluation_expression_compilee =
                                 registre_evaluation_expression_compilee;                                  registre_evaluation_expression_compilee;
   
Line 463  evaluation(struct_processus *s_etat_proc Line 466  evaluation(struct_processus *s_etat_proc
                 }                  }
   
                 depilement_pile_systeme(s_etat_processus);                  depilement_pile_systeme(s_etat_processus);
                 depilement_pile_systeme(s_etat_processus);  
   
                 if ((*s_etat_processus).erreur_systeme != d_es)                  if ((*s_etat_processus).erreur_systeme != d_es)
                 {                  {
Line 711  evaluation(struct_processus *s_etat_proc Line 713  evaluation(struct_processus *s_etat_proc
          * Exécution de la séquence d'instructions           * Exécution de la séquence d'instructions
          */           */
   
         registre_retour_definition = (*(*s_etat_processus).l_base_pile_systeme)  
                 .retour_definition;  
         (*(*s_etat_processus).l_base_pile_systeme).retour_definition = 'N';  
   
         l_element_courant = (struct_liste_chainee *) (*s_objet).objet;          l_element_courant = (struct_liste_chainee *) (*s_objet).objet;
         autorisation_empilement_programme = (*s_etat_processus)          autorisation_empilement_programme = (*s_etat_processus)
                 .autorisation_empilement_programme;                  .autorisation_empilement_programme;
Line 3381  evaluation(struct_processus *s_etat_proc Line 3379  evaluation(struct_processus *s_etat_proc
                                 liberation(s_etat_processus, s_objet_evalue);                                  liberation(s_etat_processus, s_objet_evalue);
                             }                              }
   
                               depilement_pile_systeme(s_etat_processus);
   
                             (*s_etat_processus).instruction_courante =                              (*s_etat_processus).instruction_courante =
                                     instruction_courante;                                      instruction_courante;
                             return(d_erreur);                              return(d_erreur);
Line 3400  evaluation(struct_processus *s_etat_proc Line 3400  evaluation(struct_processus *s_etat_proc
                                 .niveau_courant;                                  .niveau_courant;
   
                         (*s_etat_processus).position_courante =                          (*s_etat_processus).position_courante =
                                 (*((unsigned long *)                                  (*((integer8 *) ((*(*(*s_etat_processus)
                                 ((*(*(*s_etat_processus)  
                                 .pointeur_variable_courante).objet).objet)));                                  .pointeur_variable_courante).objet).objet)));
   
                         if ((*s_etat_processus).profilage == d_vrai)                          if ((*s_etat_processus).profilage == d_vrai)
Line 3465  evaluation(struct_processus *s_etat_proc Line 3464  evaluation(struct_processus *s_etat_proc
                                 liberation(s_etat_processus, s_objet_evalue);                                  liberation(s_etat_processus, s_objet_evalue);
                             }                              }
   
                               depilement_pile_systeme(s_etat_processus);
   
                             (*s_etat_processus).instruction_courante =                              (*s_etat_processus).instruction_courante =
                                     instruction_courante;                                      instruction_courante;
                             (*s_etat_processus).mode_execution_programme =                              (*s_etat_processus).mode_execution_programme =
Line 6487  evaluation(struct_processus *s_etat_proc Line 6488  evaluation(struct_processus *s_etat_proc
                             if (presence_variable_partagee == d_faux)                              if (presence_variable_partagee == d_faux)
                             {                              {
                                 (*s_etat_processus).position_courante =                                  (*s_etat_processus).position_courante =
                                         (*((unsigned long *)                                          (*((integer8 *)
                                         ((*(*(*s_etat_processus)                                          ((*(*(*s_etat_processus)
                                         .pointeur_variable_courante)                                          .pointeur_variable_courante)
                                         .objet).objet)));                                          .objet).objet)));
Line 6495  evaluation(struct_processus *s_etat_proc Line 6496  evaluation(struct_processus *s_etat_proc
                             else                              else
                             {                              {
                                 (*s_etat_processus).position_courante =                                  (*s_etat_processus).position_courante =
                                         (*((unsigned long *)                                          (*((integer8 *)
                                         (*s_copie_variable_partagee).objet));                                          (*s_copie_variable_partagee).objet));
                                 liberation(s_etat_processus,                                  liberation(s_etat_processus,
                                         s_copie_variable_partagee);                                          s_copie_variable_partagee);
Line 6532  evaluation(struct_processus *s_etat_proc Line 6533  evaluation(struct_processus *s_etat_proc
                                             s_objet_evalue);                                              s_objet_evalue);
                                 }                                  }
   
                                   depilement_pile_systeme(s_etat_processus);
   
                                 (*s_etat_processus).instruction_courante =                                  (*s_etat_processus).instruction_courante =
                                         instruction_courante;                                          instruction_courante;
                                 (*s_etat_processus).mode_execution_programme =                                  (*s_etat_processus).mode_execution_programme =
Line 6740  evaluation(struct_processus *s_etat_proc Line 6743  evaluation(struct_processus *s_etat_proc
                                 (*(*s_etat_processus).l_base_pile_systeme)                                  (*(*s_etat_processus).l_base_pile_systeme)
                                         .niveau_courant = (*s_etat_processus)                                          .niveau_courant = (*s_etat_processus)
                                         .niveau_courant;                                          .niveau_courant;
                                 empilement_pile_systeme(s_etat_processus);  
   
                                 if (evaluation(s_etat_processus,                                  if (evaluation(s_etat_processus,
                                         s_copie_variable_partagee,                                          s_copie_variable_partagee,
                                         type_evaluation) == d_erreur)                                          type_evaluation) == d_erreur)
                                 {                                  {
                                     depilement_pile_systeme(s_etat_processus);                                      depilement_pile_systeme(s_etat_processus);
                                     depilement_pile_systeme(s_etat_processus);  
   
                                     liberation(s_etat_processus,                                      liberation(s_etat_processus,
                                             s_copie_variable_partagee);                                              s_copie_variable_partagee);
Line 6775  evaluation(struct_processus *s_etat_proc Line 6776  evaluation(struct_processus *s_etat_proc
                                 }                                  }
   
                                 depilement_pile_systeme(s_etat_processus);                                  depilement_pile_systeme(s_etat_processus);
                                 depilement_pile_systeme(s_etat_processus);  
   
                                 liberation(s_etat_processus,                                  liberation(s_etat_processus,
                                         s_copie_variable_partagee);                                          s_copie_variable_partagee);
Line 7161  evaluation(struct_processus *s_etat_proc Line 7161  evaluation(struct_processus *s_etat_proc
                 (*s_etat_processus).autorisation_empilement_programme =                  (*s_etat_processus).autorisation_empilement_programme =
                         autorisation_empilement_programme;                          autorisation_empilement_programme;
                 (*s_etat_processus).instruction_courante = instruction_courante;                  (*s_etat_processus).instruction_courante = instruction_courante;
                 (*(*s_etat_processus).l_base_pile_systeme).retour_definition =  
                         registre_retour_definition;  
   
                 return(d_erreur);                  return(d_erreur);
             }              }
   
Line 7176  evaluation(struct_processus *s_etat_proc Line 7173  evaluation(struct_processus *s_etat_proc
                 (*s_etat_processus).autorisation_empilement_programme =                  (*s_etat_processus).autorisation_empilement_programme =
                         autorisation_empilement_programme;                          autorisation_empilement_programme;
                 (*s_etat_processus).instruction_courante = instruction_courante;                  (*s_etat_processus).instruction_courante = instruction_courante;
                 (*(*s_etat_processus).l_base_pile_systeme).retour_definition =  
                         registre_retour_definition;  
   
                 return(d_erreur);                  return(d_erreur);
             }              }
         }          }
Line 7186  evaluation(struct_processus *s_etat_proc Line 7180  evaluation(struct_processus *s_etat_proc
         (*s_etat_processus).autorisation_empilement_programme =          (*s_etat_processus).autorisation_empilement_programme =
                 autorisation_empilement_programme;                  autorisation_empilement_programme;
         (*s_etat_processus).instruction_courante = instruction_courante;          (*s_etat_processus).instruction_courante = instruction_courante;
         (*(*s_etat_processus).l_base_pile_systeme).retour_definition =  
                 registre_retour_definition;  
     }      }
     else if ((*s_objet).type == FCT)      else if ((*s_objet).type == FCT)
     {      {

Removed from v.1.72  
changed lines
  Added in v.1.77


CVSweb interface <joel.bertrand@systella.fr>