version 1.54, 2012/05/21 17:25:41
|
version 1.60, 2012/10/04 15:21:25
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.9 |
RPL/2 (R) version 4.1.11 |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 51 evaluation(struct_processus *s_etat_proc
|
Line 51 evaluation(struct_processus *s_etat_proc
|
|
|
logical1 drapeau_then; |
logical1 drapeau_then; |
logical1 erreur_evaluation; |
logical1 erreur_evaluation; |
|
logical1 presence_compteur; |
logical1 presence_egalite; |
logical1 presence_egalite; |
logical1 presence_fonction; |
logical1 presence_fonction; |
logical1 presence_variable; |
logical1 presence_variable; |
Line 584 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 912 evaluation(struct_processus *s_etat_proc
|
Line 925 evaluation(struct_processus *s_etat_proc
|
TEST(instruction_do) || |
TEST(instruction_do) || |
TEST(instruction_while) || |
TEST(instruction_while) || |
TEST(instruction_for) || |
TEST(instruction_for) || |
|
TEST(instruction_forall) || |
TEST(instruction_start) || |
TEST(instruction_start) || |
TEST(instruction_select) || |
TEST(instruction_select) || |
TEST(instruction_case) || |
TEST(instruction_case) || |
|
TEST(instruction_critical) || |
TEST(vers_niveau_superieur)) |
TEST(vers_niveau_superieur)) |
{ |
{ |
if (TEST(vers_niveau_superieur)) |
if (TEST(vers_niveau_superieur)) |
Line 932 evaluation(struct_processus *s_etat_proc
|
Line 947 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
Line 944 evaluation(struct_processus *s_etat_proc
|
Line 967 evaluation(struct_processus *s_etat_proc
|
.erreur_execution = |
.erreur_execution = |
registre_erreur_execution; |
registre_erreur_execution; |
} |
} |
|
else if (TEST(instruction_for) || |
|
TEST(instruction_forall) || |
|
TEST(instruction_start)) |
|
{ |
|
empilement_pile_systeme( |
|
s_etat_processus); |
|
|
|
if ((*s_etat_processus) |
|
.erreur_systeme != d_es) |
|
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture = 'L'; |
|
} |
else |
else |
{ |
{ |
empilement_pile_systeme( |
empilement_pile_systeme( |
Line 987 evaluation(struct_processus *s_etat_proc
|
Line 1038 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
Line 999 evaluation(struct_processus *s_etat_proc
|
Line 1058 evaluation(struct_processus *s_etat_proc
|
.erreur_execution = |
.erreur_execution = |
registre_erreur_execution; |
registre_erreur_execution; |
} |
} |
|
else if ((TEST(instruction_next) || |
|
TEST(instruction_step)) && |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'L')) |
|
{ |
|
/* |
|
* Libération des compteurs |
|
* de boucle |
|
*/ |
|
|
|
presence_compteur = |
|
(((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'F') || |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'A')) |
|
? d_vrai : d_faux; |
|
|
|
if (((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'S') && |
|
(presence_compteur == |
|
d_faux)) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if (presence_compteur == d_vrai) |
|
{ |
|
if (recherche_variable( |
|
s_etat_processus, |
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.nom_variable) == |
|
d_faux) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet == NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_variable_partagee; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.niveau_courant--; |
|
|
|
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; |
|
return(d_erreur); |
|
} |
|
} |
|
|
|
depilement_pile_systeme( |
|
s_etat_processus); |
|
} |
else |
else |
{ |
{ |
|
// Traitement spécifique pour |
|
// la fin d'une section |
|
// critique |
|
|
|
if ((*s_etat_processus) |
|
.l_base_pile_systeme |
|
== NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_end_incoherent; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'Q') |
|
{ |
|
if (pthread_mutex_unlock( |
|
&mutex_sections_critiques) |
|
!= 0) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_processus; |
|
|
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.sections_critiques--; |
|
} |
|
|
depilement_pile_systeme( |
depilement_pile_systeme( |
s_etat_processus); |
s_etat_processus); |
|
|
Line 1084 evaluation(struct_processus *s_etat_proc
|
Line 1317 evaluation(struct_processus *s_etat_proc
|
TEST(instruction_do) || |
TEST(instruction_do) || |
TEST(instruction_while) || |
TEST(instruction_while) || |
TEST(instruction_for) || |
TEST(instruction_for) || |
|
TEST(instruction_forall) || |
TEST(instruction_start) || |
TEST(instruction_start) || |
TEST(instruction_select) || |
TEST(instruction_select) || |
TEST(instruction_case) || |
TEST(instruction_case) || |
|
TEST(instruction_critical) || |
TEST(vers_niveau_superieur)) |
TEST(vers_niveau_superieur)) |
{ |
{ |
if (TEST(vers_niveau_superieur)) |
if (TEST(vers_niveau_superieur)) |
Line 1097 evaluation(struct_processus *s_etat_proc
|
Line 1332 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
} |
} |
|
else if (TEST(instruction_for) || |
|
TEST(instruction_forall) || |
|
TEST(instruction_start)) |
|
{ |
|
empilement_pile_systeme( |
|
s_etat_processus); |
|
|
|
if ((*s_etat_processus) |
|
.erreur_systeme != d_es) |
|
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture = 'L'; |
|
} |
else |
else |
{ |
{ |
empilement_pile_systeme( |
empilement_pile_systeme( |
Line 1139 evaluation(struct_processus *s_etat_proc
|
Line 1410 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
} |
} |
|
else if ((TEST(instruction_next) || |
|
TEST(instruction_step)) && |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'L')) |
|
{ |
|
/* |
|
* Libération des compteurs |
|
* de boucle |
|
*/ |
|
|
|
presence_compteur = |
|
(((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'F') || |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'A')) |
|
? d_vrai : d_faux; |
|
|
|
if (((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'S') && |
|
(presence_compteur == |
|
d_faux)) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if (presence_compteur == d_vrai) |
|
{ |
|
if (recherche_variable( |
|
s_etat_processus, |
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.nom_variable) == |
|
d_faux) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet == NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_variable_partagee; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.niveau_courant--; |
|
|
|
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; |
|
return(d_erreur); |
|
} |
|
} |
|
|
|
depilement_pile_systeme( |
|
s_etat_processus); |
|
} |
else |
else |
{ |
{ |
|
// Traitement spécifique pour |
|
// la fin d'une section |
|
// critique |
|
|
|
if ((*s_etat_processus) |
|
.l_base_pile_systeme |
|
== NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_end_incoherent; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'Q') |
|
{ |
|
if (pthread_mutex_unlock( |
|
&mutex_sections_critiques) |
|
!= 0) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_processus; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.sections_critiques--; |
|
} |
|
|
depilement_pile_systeme( |
depilement_pile_systeme( |
s_etat_processus); |
s_etat_processus); |
} |
} |
Line 1237 evaluation(struct_processus *s_etat_proc
|
Line 1694 evaluation(struct_processus *s_etat_proc
|
TEST(instruction_do) || |
TEST(instruction_do) || |
TEST(instruction_while) || |
TEST(instruction_while) || |
TEST(instruction_for) || |
TEST(instruction_for) || |
|
TEST(instruction_forall) || |
TEST(instruction_start) || |
TEST(instruction_start) || |
TEST(instruction_select) || |
TEST(instruction_select) || |
TEST(instruction_case) || |
TEST(instruction_case) || |
|
TEST(instruction_critical) || |
TEST(vers_niveau_superieur)) |
TEST(vers_niveau_superieur)) |
{ |
{ |
if (TEST(vers_niveau_superieur)) |
if (TEST(vers_niveau_superieur)) |
Line 1250 evaluation(struct_processus *s_etat_proc
|
Line 1709 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
} |
} |
|
else if (TEST(instruction_for) || |
|
TEST(instruction_forall) || |
|
TEST(instruction_start)) |
|
{ |
|
empilement_pile_systeme( |
|
s_etat_processus); |
|
|
|
if ((*s_etat_processus) |
|
.erreur_systeme != d_es) |
|
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture = 'L'; |
|
} |
else |
else |
{ |
{ |
empilement_pile_systeme( |
empilement_pile_systeme( |
Line 1292 evaluation(struct_processus *s_etat_proc
|
Line 1787 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
Line 1306 evaluation(struct_processus *s_etat_proc
|
Line 1809 evaluation(struct_processus *s_etat_proc
|
break; |
break; |
} |
} |
} |
} |
|
else if ((TEST(instruction_next) || |
|
TEST(instruction_step)) && |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'L')) |
|
{ |
|
/* |
|
* Libération des compteurs |
|
* de boucle |
|
*/ |
|
|
|
presence_compteur = |
|
(((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'F') || |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'A')) |
|
? d_vrai : d_faux; |
|
|
|
if (((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'S') && |
|
(presence_compteur == |
|
d_faux)) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if (presence_compteur == d_vrai) |
|
{ |
|
if (recherche_variable( |
|
s_etat_processus, |
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.nom_variable) == |
|
d_faux) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet == NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_variable_partagee; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.niveau_courant--; |
|
|
|
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; |
|
return(d_erreur); |
|
} |
|
} |
|
|
|
depilement_pile_systeme( |
|
s_etat_processus); |
|
} |
else |
else |
{ |
{ |
|
// Traitement spécifique pour |
|
// la fin d'une section critique |
|
|
|
if ((*s_etat_processus) |
|
.l_base_pile_systeme |
|
== NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_end_incoherent; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'Q') |
|
{ |
|
if (pthread_mutex_unlock( |
|
&mutex_sections_critiques) |
|
!= 0) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_processus; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.sections_critiques--; |
|
} |
|
|
depilement_pile_systeme( |
depilement_pile_systeme( |
s_etat_processus); |
s_etat_processus); |
|
|
Line 3235 evaluation(struct_processus *s_etat_proc
|
Line 3915 evaluation(struct_processus *s_etat_proc
|
TEST(instruction_do) || |
TEST(instruction_do) || |
TEST(instruction_while) || |
TEST(instruction_while) || |
TEST(instruction_for) || |
TEST(instruction_for) || |
|
TEST(instruction_forall) || |
TEST(instruction_start) || |
TEST(instruction_start) || |
TEST(instruction_select) || |
TEST(instruction_select) || |
TEST(instruction_case) || |
TEST(instruction_case) || |
|
TEST(instruction_critical) || |
TEST(vers_niveau_superieur)) |
TEST(vers_niveau_superieur)) |
{ |
{ |
if (TEST(vers_niveau_superieur)) |
if (TEST(vers_niveau_superieur)) |
Line 3255 evaluation(struct_processus *s_etat_proc
|
Line 3937 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
Line 3267 evaluation(struct_processus *s_etat_proc
|
Line 3957 evaluation(struct_processus *s_etat_proc
|
.erreur_execution = |
.erreur_execution = |
registre_erreur_execution; |
registre_erreur_execution; |
} |
} |
|
else if (TEST(instruction_for) || |
|
TEST(instruction_forall) || |
|
TEST(instruction_start)) |
|
{ |
|
empilement_pile_systeme( |
|
s_etat_processus); |
|
|
|
if ((*s_etat_processus) |
|
.erreur_systeme != d_es) |
|
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture = 'L'; |
|
} |
else |
else |
{ |
{ |
empilement_pile_systeme( |
empilement_pile_systeme( |
Line 3310 evaluation(struct_processus *s_etat_proc
|
Line 4028 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
Line 3322 evaluation(struct_processus *s_etat_proc
|
Line 4048 evaluation(struct_processus *s_etat_proc
|
.erreur_execution = |
.erreur_execution = |
registre_erreur_execution; |
registre_erreur_execution; |
} |
} |
|
else if ((TEST(instruction_next) || |
|
TEST(instruction_step)) && |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'L')) |
|
{ |
|
/* |
|
* Libération des compteurs |
|
* de boucle |
|
*/ |
|
|
|
presence_compteur = |
|
(((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'F') || |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'A')) |
|
? d_vrai : d_faux; |
|
|
|
if (((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'S') && |
|
(presence_compteur == |
|
d_faux)) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if (presence_compteur == d_vrai) |
|
{ |
|
if (recherche_variable( |
|
s_etat_processus, |
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.nom_variable) == |
|
d_faux) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet == NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_variable_partagee; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.niveau_courant--; |
|
|
|
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; |
|
return(d_erreur); |
|
} |
|
} |
|
|
|
depilement_pile_systeme( |
|
s_etat_processus); |
|
} |
else |
else |
{ |
{ |
|
// Traitement spécifique pour la |
|
// fin d'une section critique |
|
|
|
if ((*s_etat_processus) |
|
.l_base_pile_systeme == |
|
NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_end_incoherent; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'Q') |
|
{ |
|
if (pthread_mutex_unlock( |
|
&mutex_sections_critiques) |
|
!= 0) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_processus; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.sections_critiques--; |
|
} |
|
|
depilement_pile_systeme( |
depilement_pile_systeme( |
s_etat_processus); |
s_etat_processus); |
|
|
Line 3445 evaluation(struct_processus *s_etat_proc
|
Line 4348 evaluation(struct_processus *s_etat_proc
|
TEST(instruction_do) || |
TEST(instruction_do) || |
TEST(instruction_while) || |
TEST(instruction_while) || |
TEST(instruction_for) || |
TEST(instruction_for) || |
|
TEST(instruction_forall) || |
TEST(instruction_start) || |
TEST(instruction_start) || |
TEST(instruction_select) || |
TEST(instruction_select) || |
TEST(instruction_case) || |
TEST(instruction_case) || |
|
TEST(instruction_critical) || |
TEST(vers_niveau_superieur)) |
TEST(vers_niveau_superieur)) |
{ |
{ |
if (TEST(vers_niveau_superieur)) |
if (TEST(vers_niveau_superieur)) |
Line 3458 evaluation(struct_processus *s_etat_proc
|
Line 4363 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
} |
|
else if (TEST(instruction_for) || |
|
TEST(instruction_forall) || |
|
TEST(instruction_start)) |
|
{ |
|
empilement_pile_systeme( |
|
s_etat_processus); |
|
|
|
if ((*s_etat_processus) |
|
.erreur_systeme != d_es) |
|
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
|
|
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture = 'L'; |
} |
} |
else |
else |
{ |
{ |
Line 3500 evaluation(struct_processus *s_etat_proc
|
Line 4441 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
} |
} |
|
else if ((TEST(instruction_next) || |
|
TEST(instruction_step)) && |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'L')) |
|
{ |
|
/* |
|
* Libération des compteurs |
|
* de boucle |
|
*/ |
|
|
|
presence_compteur = |
|
(((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'F') || |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'A')) |
|
? d_vrai : d_faux; |
|
|
|
if (((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'S') && |
|
(presence_compteur == |
|
d_faux)) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if (presence_compteur == d_vrai) |
|
{ |
|
if (recherche_variable( |
|
s_etat_processus, |
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.nom_variable) == |
|
d_faux) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet == NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_variable_partagee; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.niveau_courant--; |
|
|
|
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; |
|
return(d_erreur); |
|
} |
|
} |
|
|
|
depilement_pile_systeme( |
|
s_etat_processus); |
|
} |
else |
else |
{ |
{ |
|
// Traitement spécifique pour la |
|
// fin d'une section critique |
|
|
|
if ((*s_etat_processus) |
|
.l_base_pile_systeme == |
|
NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_end_incoherent; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'Q') |
|
{ |
|
if (pthread_mutex_unlock( |
|
&mutex_sections_critiques) |
|
!= 0) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_processus; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.sections_critiques--; |
|
} |
|
|
depilement_pile_systeme( |
depilement_pile_systeme( |
s_etat_processus); |
s_etat_processus); |
|
|
Line 3595 evaluation(struct_processus *s_etat_proc
|
Line 4721 evaluation(struct_processus *s_etat_proc
|
TEST(instruction_do) || |
TEST(instruction_do) || |
TEST(instruction_while) || |
TEST(instruction_while) || |
TEST(instruction_for) || |
TEST(instruction_for) || |
|
TEST(instruction_forall) || |
TEST(instruction_start) || |
TEST(instruction_start) || |
TEST(instruction_select) || |
TEST(instruction_select) || |
TEST(instruction_case) || |
TEST(instruction_case) || |
|
TEST(instruction_critical) || |
TEST(vers_niveau_superieur)) |
TEST(vers_niveau_superieur)) |
{ |
{ |
if (TEST(vers_niveau_superieur)) |
if (TEST(vers_niveau_superieur)) |
Line 3608 evaluation(struct_processus *s_etat_proc
|
Line 4736 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
} |
|
else if (TEST(instruction_for) || |
|
TEST(instruction_forall) || |
|
TEST(instruction_start)) |
|
{ |
|
empilement_pile_systeme( |
|
s_etat_processus); |
|
|
|
if ((*s_etat_processus) |
|
.erreur_systeme != d_es) |
|
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
|
|
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture = 'L'; |
} |
} |
else |
else |
{ |
{ |
Line 3650 evaluation(struct_processus *s_etat_proc
|
Line 4814 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
} |
} |
|
else if ((TEST(instruction_next) || |
|
TEST(instruction_step)) && |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'L')) |
|
{ |
|
/* |
|
* Libération des compteurs |
|
* de boucle |
|
*/ |
|
|
|
presence_compteur = |
|
(((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'F') || |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'A')) |
|
? d_vrai : d_faux; |
|
|
|
if (((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'S') && |
|
(presence_compteur == |
|
d_faux)) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if (presence_compteur == d_vrai) |
|
{ |
|
if (recherche_variable( |
|
s_etat_processus, |
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.nom_variable) == |
|
d_faux) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet == NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_variable_partagee; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.niveau_courant--; |
|
|
|
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; |
|
return(d_erreur); |
|
} |
|
} |
|
|
|
depilement_pile_systeme( |
|
s_etat_processus); |
|
} |
else |
else |
{ |
{ |
|
// Traitement spécifique pour la |
|
// fin d'une section critique |
|
|
|
if ((*s_etat_processus) |
|
.l_base_pile_systeme == |
|
NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_end_incoherent; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'Q') |
|
{ |
|
if (pthread_mutex_unlock( |
|
&mutex_sections_critiques) |
|
!= 0) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_processus; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.sections_critiques--; |
|
} |
|
|
depilement_pile_systeme( |
depilement_pile_systeme( |
s_etat_processus); |
s_etat_processus); |
|
|
Line 3816 evaluation(struct_processus *s_etat_proc
|
Line 5165 evaluation(struct_processus *s_etat_proc
|
TEST(instruction_do) || |
TEST(instruction_do) || |
TEST(instruction_while) || |
TEST(instruction_while) || |
TEST(instruction_for) || |
TEST(instruction_for) || |
|
TEST(instruction_forall) || |
TEST(instruction_start) || |
TEST(instruction_start) || |
TEST(instruction_select) || |
TEST(instruction_select) || |
TEST(instruction_case) || |
TEST(instruction_case) || |
|
TEST(instruction_critical) || |
TEST(vers_niveau_superieur)) |
TEST(vers_niveau_superieur)) |
{ |
{ |
if (TEST(vers_niveau_superieur)) |
if (TEST(vers_niveau_superieur)) |
Line 3836 evaluation(struct_processus *s_etat_proc
|
Line 5187 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
Line 3848 evaluation(struct_processus *s_etat_proc
|
Line 5207 evaluation(struct_processus *s_etat_proc
|
.erreur_execution = |
.erreur_execution = |
registre_erreur_execution; |
registre_erreur_execution; |
} |
} |
|
else if (TEST(instruction_for) || |
|
TEST(instruction_forall) || |
|
TEST(instruction_start)) |
|
{ |
|
empilement_pile_systeme( |
|
s_etat_processus); |
|
|
|
if ((*s_etat_processus) |
|
.erreur_systeme != d_es) |
|
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture = 'L'; |
|
} |
else |
else |
{ |
{ |
empilement_pile_systeme( |
empilement_pile_systeme( |
Line 3891 evaluation(struct_processus *s_etat_proc
|
Line 5278 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
Line 3903 evaluation(struct_processus *s_etat_proc
|
Line 5298 evaluation(struct_processus *s_etat_proc
|
.erreur_execution = |
.erreur_execution = |
registre_erreur_execution; |
registre_erreur_execution; |
} |
} |
|
else if ((TEST(instruction_next) || |
|
TEST(instruction_step)) && |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'L')) |
|
{ |
|
/* |
|
* Libération des compteurs |
|
* de boucle |
|
*/ |
|
|
|
presence_compteur = |
|
(((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'F') || |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'A')) |
|
? d_vrai : d_faux; |
|
|
|
if (((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'S') && |
|
(presence_compteur == |
|
d_faux)) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if (presence_compteur == d_vrai) |
|
{ |
|
if (recherche_variable( |
|
s_etat_processus, |
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.nom_variable) == |
|
d_faux) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet == NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_variable_partagee; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.niveau_courant--; |
|
|
|
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; |
|
return(d_erreur); |
|
} |
|
} |
|
|
|
depilement_pile_systeme( |
|
s_etat_processus); |
|
} |
else |
else |
{ |
{ |
|
// Traitement spécifique pour la |
|
// fin d'une section critique |
|
|
|
if ((*s_etat_processus) |
|
.l_base_pile_systeme == |
|
NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_end_incoherent; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'Q') |
|
{ |
|
if (pthread_mutex_unlock( |
|
&mutex_sections_critiques) |
|
!= 0) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_processus; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.sections_critiques--; |
|
} |
|
|
depilement_pile_systeme( |
depilement_pile_systeme( |
s_etat_processus); |
s_etat_processus); |
|
|
Line 4026 evaluation(struct_processus *s_etat_proc
|
Line 5598 evaluation(struct_processus *s_etat_proc
|
TEST(instruction_do) || |
TEST(instruction_do) || |
TEST(instruction_while) || |
TEST(instruction_while) || |
TEST(instruction_for) || |
TEST(instruction_for) || |
|
TEST(instruction_forall) || |
TEST(instruction_start) || |
TEST(instruction_start) || |
TEST(instruction_select) || |
TEST(instruction_select) || |
TEST(instruction_case) || |
TEST(instruction_case) || |
|
TEST(instruction_critical) || |
TEST(vers_niveau_superieur)) |
TEST(vers_niveau_superieur)) |
{ |
{ |
if (TEST(vers_niveau_superieur)) |
if (TEST(vers_niveau_superieur)) |
Line 4039 evaluation(struct_processus *s_etat_proc
|
Line 5613 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
} |
|
else if (TEST(instruction_for) || |
|
TEST(instruction_forall) || |
|
TEST(instruction_start)) |
|
{ |
|
empilement_pile_systeme( |
|
s_etat_processus); |
|
|
|
if ((*s_etat_processus) |
|
.erreur_systeme != d_es) |
|
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
|
|
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture = 'L'; |
} |
} |
else |
else |
{ |
{ |
Line 4081 evaluation(struct_processus *s_etat_proc
|
Line 5691 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
} |
} |
|
else if ((TEST(instruction_next) || |
|
TEST(instruction_step)) && |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'L')) |
|
{ |
|
/* |
|
* Libération des compteurs |
|
* de boucle |
|
*/ |
|
|
|
presence_compteur = |
|
(((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'F') || |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'A')) |
|
? d_vrai : d_faux; |
|
|
|
if (((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'S') && |
|
(presence_compteur == |
|
d_faux)) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if (presence_compteur == d_vrai) |
|
{ |
|
if (recherche_variable( |
|
s_etat_processus, |
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.nom_variable) == |
|
d_faux) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet == NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_variable_partagee; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.niveau_courant--; |
|
|
|
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; |
|
return(d_erreur); |
|
} |
|
} |
|
|
|
depilement_pile_systeme( |
|
s_etat_processus); |
|
} |
else |
else |
{ |
{ |
|
// Traitement spécifique pour la |
|
// fin d'une section critique |
|
|
|
if ((*s_etat_processus) |
|
.l_base_pile_systeme == |
|
NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_end_incoherent; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'Q') |
|
{ |
|
if (pthread_mutex_unlock( |
|
&mutex_sections_critiques) |
|
!= 0) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_processus; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.sections_critiques--; |
|
} |
|
|
depilement_pile_systeme( |
depilement_pile_systeme( |
s_etat_processus); |
s_etat_processus); |
|
|
Line 4176 evaluation(struct_processus *s_etat_proc
|
Line 5971 evaluation(struct_processus *s_etat_proc
|
TEST(instruction_do) || |
TEST(instruction_do) || |
TEST(instruction_while) || |
TEST(instruction_while) || |
TEST(instruction_for) || |
TEST(instruction_for) || |
|
TEST(instruction_forall) || |
TEST(instruction_start) || |
TEST(instruction_start) || |
TEST(instruction_select) || |
TEST(instruction_select) || |
TEST(instruction_case) || |
TEST(instruction_case) || |
|
TEST(instruction_critical) || |
TEST(vers_niveau_superieur)) |
TEST(vers_niveau_superieur)) |
{ |
{ |
if (TEST(vers_niveau_superieur)) |
if (TEST(vers_niveau_superieur)) |
Line 4189 evaluation(struct_processus *s_etat_proc
|
Line 5986 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
} |
|
else if (TEST(instruction_for) || |
|
TEST(instruction_forall) || |
|
TEST(instruction_start)) |
|
{ |
|
empilement_pile_systeme( |
|
s_etat_processus); |
|
|
|
if ((*s_etat_processus) |
|
.erreur_systeme != d_es) |
|
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
|
|
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture = 'L'; |
} |
} |
else |
else |
{ |
{ |
Line 4231 evaluation(struct_processus *s_etat_proc
|
Line 6064 evaluation(struct_processus *s_etat_proc
|
if ((*s_etat_processus) |
if ((*s_etat_processus) |
.erreur_systeme != d_es) |
.erreur_systeme != d_es) |
{ |
{ |
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
(*s_etat_processus) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
} |
} |
|
else if ((TEST(instruction_next) || |
|
TEST(instruction_step)) && |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'L')) |
|
{ |
|
/* |
|
* Libération des compteurs |
|
* de boucle |
|
*/ |
|
|
|
presence_compteur = |
|
(((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'F') || |
|
((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'A')) |
|
? d_vrai : d_faux; |
|
|
|
if (((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture != 'S') && |
|
(presence_compteur == |
|
d_faux)) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if (presence_compteur == d_vrai) |
|
{ |
|
if (recherche_variable( |
|
s_etat_processus, |
|
(*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.nom_variable) == |
|
d_faux) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_erreur_traitement_boucle; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet == NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = d_es; |
|
(*s_etat_processus) |
|
.erreur_execution = |
|
d_ex_variable_partagee; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.niveau_courant--; |
|
|
|
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; |
|
return(d_erreur); |
|
} |
|
} |
|
|
|
depilement_pile_systeme( |
|
s_etat_processus); |
|
} |
else |
else |
{ |
{ |
|
// Traitement spécifique pour la |
|
// fin d'une section critique |
|
|
|
if ((*s_etat_processus) |
|
.l_base_pile_systeme == |
|
NULL) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_end_incoherent; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
if ((*(*s_etat_processus) |
|
.l_base_pile_systeme) |
|
.type_cloture == 'Q') |
|
{ |
|
if (pthread_mutex_unlock( |
|
&mutex_sections_critiques) |
|
!= 0) |
|
{ |
|
(*s_etat_processus) |
|
.erreur_systeme = |
|
d_es_processus; |
|
|
|
if (presence_egalite == |
|
d_vrai) |
|
{ |
|
liberation( |
|
s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus) |
|
.instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus) |
|
.sections_critiques--; |
|
} |
|
|
depilement_pile_systeme( |
depilement_pile_systeme( |
s_etat_processus); |
s_etat_processus); |
|
|
Line 5111 evaluation(struct_processus *s_etat_proc
|
Line 7129 evaluation(struct_processus *s_etat_proc
|
|
|
// Traitement de l'instruction EXIT en mode interactif |
// Traitement de l'instruction EXIT en mode interactif |
|
|
if (l_element_courant != NULL) |
|
{ |
|
l_element_courant = (*l_element_courant).suivant; |
|
} |
|
else |
|
{ |
|
(*s_etat_processus).mode_execution_programme = 'Y'; |
|
|
|
if ((*s_etat_processus).niveau_courant == 1) |
|
{ |
|
(*s_etat_processus).debug_programme = d_faux; |
|
(*s_etat_processus).execution_pas_suivant = d_vrai; |
|
} |
|
} |
|
|
|
if ((*s_etat_processus).traitement_cycle_exit != 'N') |
if ((*s_etat_processus).traitement_cycle_exit != 'N') |
{ |
{ |
registre_expression_courante = |
registre_expression_courante = |
Line 5152 evaluation(struct_processus *s_etat_proc
|
Line 7155 evaluation(struct_processus *s_etat_proc
|
(*s_etat_processus).expression_courante = |
(*s_etat_processus).expression_courante = |
registre_expression_courante; |
registre_expression_courante; |
} |
} |
|
|
|
if (l_element_courant != NULL) |
|
{ |
|
l_element_courant = (*l_element_courant).suivant; |
|
} |
|
else |
|
{ |
|
(*s_etat_processus).mode_execution_programme = 'Y'; |
|
|
|
if ((*s_etat_processus).niveau_courant == 1) |
|
{ |
|
(*s_etat_processus).debug_programme = d_faux; |
|
(*s_etat_processus).execution_pas_suivant = d_vrai; |
|
} |
|
} |
|
|
} |
} |
|
|
if (niveau_initial < (*s_etat_processus).niveau_courant) |
if (niveau_initial < (*s_etat_processus).niveau_courant) |
Line 5163 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 5173 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); |
} |
} |
|
|
/* |
/* |