version 1.49, 2011/11/26 10:01:26
|
version 1.58, 2012/09/30 20:46:46
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.5 |
RPL/2 (R) version 4.1.10 |
Copyright (C) 1989-2011 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 912 evaluation(struct_processus *s_etat_proc
|
Line 913 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 935 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 955 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 1026 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 1046 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_variable_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 1306 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 1321 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 1139 evaluation(struct_processus *s_etat_proc
|
Line 1399 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_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) |
(*s_etat_processus) |
.instruction_courante = |
.instruction_courante = |
instruction_courante; |
instruction_courante; |
return(d_erreur); |
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_variable_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 1684 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 1699 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 1292 evaluation(struct_processus *s_etat_proc
|
Line 1777 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 1799 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_variable_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 3906 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 3928 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 3948 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 4019 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 4039 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_variable_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 4340 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 4355 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 4433 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_variable_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 4714 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 4729 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 3650 evaluation(struct_processus *s_etat_proc
|
Line 4807 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_variable_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 5159 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 5181 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 5201 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 5272 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 5292 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_variable_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 5593 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 5608 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 5686 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_variable_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 5967 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 5982 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 4231 evaluation(struct_processus *s_etat_proc
|
Line 6060 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_variable_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 7126 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 7152 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) |