Diff for /rpl/src/evaluation.c between versions 1.10 and 1.13

version 1.10, 2010/04/07 13:45:02 version 1.13, 2010/04/21 12:30:26
Line 143  evaluation(struct_processus *s_etat_proc Line 143  evaluation(struct_processus *s_etat_proc
             if (recherche_variable(s_etat_processus, (*((struct_nom *)              if (recherche_variable(s_etat_processus, (*((struct_nom *)
                     (*s_objet_tampon).objet)).nom) == d_faux)                      (*s_objet_tampon).objet)).nom) == d_faux)
             {              {
                   (*s_etat_processus).erreur_execution = d_ex;
   
                 if ((*s_etat_processus).autorisation_nom_implicite == 'N')                  if ((*s_etat_processus).autorisation_nom_implicite == 'N')
                 {                  {
                     if ((*((struct_nom *) (*s_objet_tampon).objet)).symbole ==                      if ((*((struct_nom *) (*s_objet_tampon).objet)).symbole ==
                             d_faux)                              d_faux)
                     {                      {
                           if (test_cfsf(s_etat_processus, 31) == d_vrai)
                           {
                               if (empilement_pile_last(s_etat_processus, 0)
                                       == d_erreur)
                               {
                                   return(d_erreur);
                               }
                           }
   
                           erreur_evaluation = d_erreur;
                         (*s_etat_processus).erreur_execution =                          (*s_etat_processus).erreur_execution =
                                 d_ex_manque_argument;                                  d_ex_nom_implicite;
                         return(d_erreur);  
                           if (type_evaluation == 'I')
                           {
                               (*s_etat_processus).derniere_erreur_evaluation =
                                       (*s_etat_processus).erreur_execution;
                           }
                     }                      }
                 }                  }
   
Line 474  evaluation(struct_processus *s_etat_proc Line 491  evaluation(struct_processus *s_etat_proc
                 (*s_etat_processus).evaluation_expression_compilee =                  (*s_etat_processus).evaluation_expression_compilee =
                         registre_evaluation_expression_compilee;                          registre_evaluation_expression_compilee;
             }              }
             else              else if ((*s_etat_processus).erreur_execution != d_ex_nom_implicite)
             {              {
                 if ((s_objet_tampon = copie_objet(s_etat_processus,                  if ((s_objet_tampon = copie_objet(s_etat_processus,
                         s_objet, 'P')) == NULL)                          s_objet, 'Q')) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
                             d_es_allocation_memoire;                              d_es_allocation_memoire;
Line 495  evaluation(struct_processus *s_etat_proc Line 512  evaluation(struct_processus *s_etat_proc
                             instruction_courante;                              instruction_courante;
                     return(d_erreur);                      return(d_erreur);
                 }                  }
   
                 if ((*s_etat_processus).erreur_execution ==  
                         d_ex_variable_non_definie)  
                 {  
                     (*s_etat_processus).erreur_execution = d_ex;  
                 }  
             }              }
         }          }
         else          else
Line 4013  evaluation(struct_processus *s_etat_proc Line 4024  evaluation(struct_processus *s_etat_proc
                                 {                                  {
                                     /*                                      /*
                                      * La fin de l'expression est atteinte,                                       * La fin de l'expression est atteinte,
                                      * le sequenceur reprend la main.                                       * le séquenceur reprend la main.
                                      */                                       */
   
                                     if (presence_egalite == d_vrai)                                      if (presence_egalite == d_vrai)
Line 4392  evaluation(struct_processus *s_etat_proc Line 4403  evaluation(struct_processus *s_etat_proc
                     if (recherche_variable(s_etat_processus, (*((struct_nom *)                      if (recherche_variable(s_etat_processus, (*((struct_nom *)
                             (*s_objet_elementaire).objet)).nom) == d_faux)                              (*s_objet_elementaire).objet)).nom) == d_faux)
                     {                      {
                           (*s_etat_processus).erreur_systeme = d_es;
                           presence_variable = d_faux;
   
                         if ((*s_etat_processus).autorisation_nom_implicite                          if ((*s_etat_processus).autorisation_nom_implicite
                                 == 'N')                                  == 'N')
                         {                          {
                             if ((*((struct_nom *) (*s_objet_elementaire).objet))                              if ((*((struct_nom *) (*s_objet_elementaire).objet))
                                     .symbole == d_faux)                                      .symbole == d_faux)
                             {                              {
                                 (*s_etat_processus).erreur_systeme =                                  if (test_cfsf(s_etat_processus, 31) == d_vrai)
                                         d_es_nom_implicite;                                  {
                                 return(d_erreur);                                      if (empilement_pile_last(s_etat_processus,
                                               0) == d_erreur)
                                       {
                                           return(d_erreur);
                                       }
                                   }
   
                                   erreur_evaluation = d_erreur;
                                   (*s_etat_processus).erreur_execution =
                                           d_ex_nom_implicite;
   
                                   if (type_evaluation == 'I')
                                   {
                                       (*s_etat_processus)
                                               .derniere_erreur_evaluation =
                                               (*s_etat_processus)
                                               .erreur_execution;
                                   }
                             }                              }
                         }                          }
   
                         (*s_etat_processus).erreur_systeme = d_es;  
                         presence_variable = d_faux;  
                     }                      }
                     else                      else
                     {                      {
Line 4788  evaluation(struct_processus *s_etat_proc Line 4816  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 4818  evaluation(struct_processus *s_etat_proc Line 4847  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 5099  evaluation(struct_processus *s_etat_proc Line 5129  evaluation(struct_processus *s_etat_proc
                             ((*s_etat_processus).erreur_execution != d_ex) ||                              ((*s_etat_processus).erreur_execution != d_ex) ||
                             ((*s_etat_processus).exception != d_ep))                              ((*s_etat_processus).exception != d_ep))
                     {                      {
                           // Il est anormal de récupérer ici une erreur
                           // d'exécution puisqu'on empile une constante
                           // symbolique.
   
                         if (presence_egalite == d_vrai)                          if (presence_egalite == d_vrai)
                         {                          {
                             liberation(s_etat_processus, s_objet_evalue);                              liberation(s_etat_processus, s_objet_evalue);

Removed from v.1.10  
changed lines
  Added in v.1.13


CVSweb interface <joel.bertrand@systella.fr>