version 1.84, 2014/07/17 08:07:17
|
version 1.97, 2015/12/13 22:55:00
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.19 |
RPL/2 (R) version 4.1.24 |
Copyright (C) 1989-2014 Dr. BERTRAND Joël |
Copyright (C) 1989-2015 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 758 evaluation(struct_processus *s_etat_proc
|
Line 758 evaluation(struct_processus *s_etat_proc
|
(*s_etat_processus) |
(*s_etat_processus) |
.evaluation_expression_compilee; |
.evaluation_expression_compilee; |
|
|
if (((*(*s_etat_processus).pointeur_variable_courante) |
(*s_etat_processus).evaluation_expression_compilee |
.origine == 'E') && ((*(*s_etat_processus) |
= 'Y'; |
.pointeur_variable_courante).niveau == 0)) |
|
{ |
|
(*s_etat_processus).evaluation_expression_compilee |
|
= 'Y'; |
|
} |
|
else |
|
{ |
|
(*s_etat_processus).evaluation_expression_compilee |
|
= 'N'; |
|
} |
|
|
|
analyse(s_etat_processus, (*((struct_fonction *) |
analyse(s_etat_processus, (*((struct_fonction *) |
(*(*l_element_courant).donnee).objet)) |
(*(*l_element_courant).donnee).objet)) |
Line 3092 evaluation(struct_processus *s_etat_proc
|
Line 3082 evaluation(struct_processus *s_etat_proc
|
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
|
|
|
// Si l'objet élémentaire est un nom et que ce nom n'est |
|
// pas un nom symbolique, il convient de l'évaluer. |
|
|
|
if ((*s_objet_elementaire).type == NOM) |
|
{ |
|
if (((*((struct_nom *) (*s_objet_elementaire) |
|
.objet)).symbole == d_faux) || |
|
(type_evaluation == 'N')) |
|
{ |
|
if (evaluation(s_etat_processus, |
|
s_objet_elementaire, 'E') == d_erreur) |
|
{ |
|
if (presence_variable_partagee == d_vrai) |
|
{ |
|
(*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet = NULL; |
|
|
|
if (pthread_mutex_unlock( |
|
&((*(*s_etat_processus) |
|
.pointeur_variable_partagee_courante |
|
).mutex)) != 0) |
|
{ |
|
(*s_etat_processus).erreur_systeme = |
|
d_es_processus; |
|
} |
|
} |
|
|
|
if (presence_egalite == d_vrai) |
|
{ |
|
liberation(s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus).erreur_systeme = |
|
d_es_allocation_memoire; |
|
(*s_etat_processus).instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
liberation(s_etat_processus, |
|
s_objet_elementaire); |
|
|
|
|
|
if (depilement(s_etat_processus, |
|
&((*s_etat_processus).l_base_pile), |
|
&s_objet_elementaire) == d_erreur) |
|
{ |
|
if (presence_variable_partagee == d_vrai) |
|
{ |
|
(*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet = NULL; |
|
|
|
if (pthread_mutex_unlock( |
|
&((*(*s_etat_processus) |
|
.pointeur_variable_partagee_courante |
|
).mutex)) != 0) |
|
{ |
|
(*s_etat_processus).erreur_systeme = |
|
d_es_processus; |
|
} |
|
} |
|
|
|
if (presence_egalite == d_vrai) |
|
{ |
|
liberation(s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus).erreur_systeme = |
|
d_es_allocation_memoire; |
|
(*s_etat_processus).instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
} |
|
} |
} |
} |
|
|
/* |
/* |
Line 3249 evaluation(struct_processus *s_etat_proc
|
Line 3319 evaluation(struct_processus *s_etat_proc
|
instruction_courante; |
instruction_courante; |
return(d_erreur); |
return(d_erreur); |
} |
} |
|
|
|
// Si l'objet élémentaire est un nom et que ce nom n'est |
|
// pas un nom symbolique, il convient de l'évaluer. |
|
|
|
if ((*s_objet_elementaire).type == NOM) |
|
{ |
|
if (((*((struct_nom *) (*s_objet_elementaire) |
|
.objet)).symbole == d_faux) || |
|
(type_evaluation == 'N')) |
|
{ |
|
if (evaluation(s_etat_processus, |
|
s_objet_elementaire, 'E') == d_erreur) |
|
{ |
|
if (presence_variable_partagee == d_vrai) |
|
{ |
|
(*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet = NULL; |
|
|
|
if (pthread_mutex_unlock( |
|
&((*(*s_etat_processus) |
|
.pointeur_variable_partagee_courante |
|
).mutex)) != 0) |
|
{ |
|
(*s_etat_processus).erreur_systeme = |
|
d_es_processus; |
|
} |
|
} |
|
|
|
if (presence_egalite == d_vrai) |
|
{ |
|
liberation(s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus).erreur_systeme = |
|
d_es_allocation_memoire; |
|
(*s_etat_processus).instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
|
|
liberation(s_etat_processus, |
|
s_objet_elementaire); |
|
|
|
|
|
if (depilement(s_etat_processus, |
|
&((*s_etat_processus).l_base_pile), |
|
&s_objet_elementaire) == d_erreur) |
|
{ |
|
if (presence_variable_partagee == d_vrai) |
|
{ |
|
(*(*s_etat_processus) |
|
.pointeur_variable_courante) |
|
.objet = NULL; |
|
|
|
if (pthread_mutex_unlock( |
|
&((*(*s_etat_processus) |
|
.pointeur_variable_partagee_courante |
|
).mutex)) != 0) |
|
{ |
|
(*s_etat_processus).erreur_systeme = |
|
d_es_processus; |
|
} |
|
} |
|
|
|
if (presence_egalite == d_vrai) |
|
{ |
|
liberation(s_etat_processus, |
|
s_objet_evalue); |
|
} |
|
|
|
(*s_etat_processus).erreur_systeme = |
|
d_es_allocation_memoire; |
|
(*s_etat_processus).instruction_courante = |
|
instruction_courante; |
|
return(d_erreur); |
|
} |
|
} |
|
} |
} |
} |
else if (((*((*(*s_etat_processus) |
else if (((*((*(*s_etat_processus) |
.pointeur_variable_courante).objet)).type == ALG) || |
.pointeur_variable_courante).objet)).type == ALG) || |
Line 3666 evaluation(struct_processus *s_etat_proc
|
Line 3816 evaluation(struct_processus *s_etat_proc
|
.evaluation_expression_compilee; |
.evaluation_expression_compilee; |
|
|
(*s_etat_processus).evaluation_expression_compilee |
(*s_etat_processus).evaluation_expression_compilee |
= 'N'; |
= 'Y'; |
|
|
if (evaluation(s_etat_processus, (*l_element_courant) |
if (evaluation(s_etat_processus, (*l_element_courant) |
.donnee, type_evaluation) == d_erreur) |
.donnee, type_evaluation) == d_erreur) |
Line 7541 evaluation(struct_processus *s_etat_proc
|
Line 7691 evaluation(struct_processus *s_etat_proc
|
|
|
registre_type_evaluation = (test_cfsf(s_etat_processus, 35) == d_vrai) |
registre_type_evaluation = (test_cfsf(s_etat_processus, 35) == d_vrai) |
? 'E' : 'N'; |
? 'E' : 'N'; |
cf(s_etat_processus, 35); |
|
|
if (type_evaluation == 'N') |
|
{ |
|
cf(s_etat_processus, 35); |
|
} |
|
else |
|
{ |
|
sf(s_etat_processus, 35); |
|
} |
|
|
analyse(s_etat_processus, (*((struct_fonction *) |
analyse(s_etat_processus, (*((struct_fonction *) |
(*s_objet).objet)).fonction); |
(*s_objet).objet)).fonction); |