--- rpl/src/evaluation.c 2013/03/06 09:00:26 1.73 +++ rpl/src/evaluation.c 2013/03/20 17:11:43 1.75 @@ -48,6 +48,13 @@ evaluation(struct_processus *s_etat_proc { integer8 i; 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 erreur_evaluation; @@ -89,16 +96,9 @@ evaluation(struct_processus *s_etat_proc unsigned char registre_test_2; unsigned char registre_type_evaluation; - unsigned int registre_erreur_execution; - unsigned int registre_erreur_systeme; - unsigned 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; + int registre_erreur_execution; + int registre_erreur_systeme; + int registre_exception; void (*fonction)(); @@ -291,13 +291,13 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_faux) { (*s_etat_processus).position_courante = - (*((unsigned long *) ((*(*(*s_etat_processus) + (*((integer8 *) ((*(*(*s_etat_processus) .pointeur_variable_courante).objet).objet))); } else { (*s_etat_processus).position_courante = - (*((unsigned long *) (*s_copie_variable_partagee) + (*((integer8 *) (*s_copie_variable_partagee) .objet)); liberation(s_etat_processus, s_copie_variable_partagee); } @@ -324,6 +324,8 @@ evaluation(struct_processus *s_etat_proc if (sequenceur(s_etat_processus) == d_erreur) { + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).evaluation_forcee = registre_evaluation_forcee; (*s_etat_processus).mode_execution_programme = @@ -409,7 +411,8 @@ evaluation(struct_processus *s_etat_proc .niveau_courant = (*s_etat_processus) .niveau_courant; - empilement_pile_systeme(s_etat_processus); + // ICI + //empilement_pile_systeme(s_etat_processus); if (presence_variable_partagee == d_faux) { @@ -422,6 +425,8 @@ evaluation(struct_processus *s_etat_proc profilage(s_etat_processus, NULL); } + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).evaluation_expression_compilee = registre_evaluation_expression_compilee; @@ -444,6 +449,8 @@ evaluation(struct_processus *s_etat_proc profilage(s_etat_processus, NULL); } + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).evaluation_expression_compilee = registre_evaluation_expression_compilee; @@ -463,7 +470,6 @@ evaluation(struct_processus *s_etat_proc } depilement_pile_systeme(s_etat_processus); - depilement_pile_systeme(s_etat_processus); if ((*s_etat_processus).erreur_systeme != d_es) { @@ -814,7 +820,6 @@ evaluation(struct_processus *s_etat_proc { if ((*s_etat_processus).arret_si_exception == d_faux) { -uprintf("\n"); /* * Reprise sur erreur */ @@ -1250,7 +1255,6 @@ uprintf("\n"); /* * Reprise sur erreur */ -uprintf("\n"); while(l_element_courant != NULL) { @@ -3383,6 +3387,8 @@ uprintf("\n"); liberation(s_etat_processus, s_objet_evalue); } + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).instruction_courante = instruction_courante; return(d_erreur); @@ -3402,8 +3408,7 @@ uprintf("\n"); .niveau_courant; (*s_etat_processus).position_courante = - (*((unsigned long *) - ((*(*(*s_etat_processus) + (*((integer8 *) ((*(*(*s_etat_processus) .pointeur_variable_courante).objet).objet))); if ((*s_etat_processus).profilage == d_vrai) @@ -3467,6 +3472,8 @@ uprintf("\n"); liberation(s_etat_processus, s_objet_evalue); } + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).instruction_courante = instruction_courante; (*s_etat_processus).mode_execution_programme = @@ -3798,7 +3805,6 @@ uprintf("\n"); * Reprise sur erreur */ -uprintf("\n"); if ((message = messages(s_etat_processus)) == NULL) { if (presence_egalite == d_vrai) @@ -4271,7 +4277,6 @@ uprintf("\n"); * Reprise sur erreur */ -uprintf("\n"); while(l_element_courant != NULL) { if ((*(*l_element_courant).donnee).type == FCT) @@ -5050,7 +5055,6 @@ uprintf("\n"); * Reprise sur erreur */ -uprintf("\n"); if ((message = messages(s_etat_processus)) == NULL) { if (presence_egalite == d_vrai) @@ -5523,7 +5527,6 @@ uprintf("\n"); * Reprise sur erreur */ -uprintf("\n"); while(l_element_courant != NULL) { if ((*(*l_element_courant).donnee).type == FCT) @@ -6493,7 +6496,7 @@ uprintf("\n"); if (presence_variable_partagee == d_faux) { (*s_etat_processus).position_courante = - (*((unsigned long *) + (*((integer8 *) ((*(*(*s_etat_processus) .pointeur_variable_courante) .objet).objet))); @@ -6501,7 +6504,7 @@ uprintf("\n"); else { (*s_etat_processus).position_courante = - (*((unsigned long *) + (*((integer8 *) (*s_copie_variable_partagee).objet)); liberation(s_etat_processus, s_copie_variable_partagee); @@ -6538,6 +6541,8 @@ uprintf("\n"); s_objet_evalue); } + depilement_pile_systeme(s_etat_processus); + (*s_etat_processus).instruction_courante = instruction_courante; (*s_etat_processus).mode_execution_programme = @@ -6746,14 +6751,12 @@ uprintf("\n"); (*(*s_etat_processus).l_base_pile_systeme) .niveau_courant = (*s_etat_processus) .niveau_courant; - empilement_pile_systeme(s_etat_processus); if (evaluation(s_etat_processus, s_copie_variable_partagee, type_evaluation) == d_erreur) { depilement_pile_systeme(s_etat_processus); - depilement_pile_systeme(s_etat_processus); liberation(s_etat_processus, s_copie_variable_partagee); @@ -6781,7 +6784,6 @@ uprintf("\n"); } depilement_pile_systeme(s_etat_processus); - depilement_pile_systeme(s_etat_processus); liberation(s_etat_processus, s_copie_variable_partagee);