version 1.3, 2010/02/10 10:14:25
|
version 1.18, 2010/09/23 15:27:40
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.0.11 |
RPL/2 (R) version 4.0.20 |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 20
|
Line 20
|
*/ |
*/ |
|
|
|
|
#include "rpl.conv.h" |
#include "rpl-conv.h" |
|
|
|
|
/* |
/* |
Line 64 instruction_type(struct_processus *s_eta
|
Line 64 instruction_type(struct_processus *s_eta
|
d_TAB, |
d_TAB, |
d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SLB, d_SCK, |
d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SLB, d_SCK, |
d_PRC); |
d_PRC); |
printf("-> 1: %s\n", d_INT); |
printf("-> 1: %s\n\n", d_INT); |
|
|
|
if ((*s_etat_processus).langue == 'F') |
|
{ |
|
printf(" Valeurs renvoyées : \n\n"); |
|
printf(" 0 : scalaire (entier ou réel)\n"); |
|
printf(" 1 : complexe\n"); |
|
printf(" 2 : chaîne de caractères\n"); |
|
printf(" 3 : vecteur ou matrice de scalaires\n"); |
|
printf(" 4 : vecteur ou matrice de complexes\n"); |
|
printf(" 5 : liste\n"); |
|
printf(" 6 : adresse\n"); |
|
printf(" 7 : nom\n"); |
|
printf(" 8 : expression en notation polonaire inversée\n"); |
|
printf(" 9 : expression algébrique\n"); |
|
printf(" 10 : entier binaire\n"); |
|
printf(" 11 : descripteur de fichier\n"); |
|
printf(" 12 : descripteur de bibliothèque partagée\n"); |
|
printf(" 13 : descripteur de socket\n"); |
|
printf(" 14 : processus\n"); |
|
printf(" 15 : fonction\n"); |
|
printf(" 16 : table\n"); |
|
} |
|
else |
|
{ |
|
printf(" Returned values : \n\n"); |
|
printf(" 0 : scalar, integer or real number\n"); |
|
printf(" 1 : complex\n"); |
|
printf(" 2 : string\n"); |
|
printf(" 3 : scalar vector or scalar matrix\n"); |
|
printf(" 4 : complex vector or complex matrix\n"); |
|
printf(" 5 : list\n"); |
|
printf(" 6 : address\n"); |
|
printf(" 7 : name\n"); |
|
printf(" 8 : RPN expression\n"); |
|
printf(" 9 : algebraic expression\n"); |
|
printf(" 10 : binary integer\n"); |
|
printf(" 11 : file descriptor\n"); |
|
printf(" 12 : shared library descriptor\n"); |
|
printf(" 13 : socket descriptor\n"); |
|
printf(" 14 : process\n"); |
|
printf(" 15 : function\n"); |
|
printf(" 16 : table\n"); |
|
} |
|
|
return; |
return; |
} |
} |
Line 214 instruction_then(struct_processus *s_eta
|
Line 257 instruction_then(struct_processus *s_eta
|
|
|
struct_liste_chainee *s_registre; |
struct_liste_chainee *s_registre; |
|
|
|
struct_liste_pile_systeme *l_element_courant; |
|
|
struct_objet *s_objet; |
struct_objet *s_objet; |
|
|
unsigned char *instruction_majuscule; |
unsigned char *instruction_majuscule; |
Line 343 instruction_then(struct_processus *s_eta
|
Line 388 instruction_then(struct_processus *s_eta
|
return; |
return; |
} |
} |
|
|
if (((*s_objet).type == INT) || |
if (((*s_objet).type == INT) || ((*s_objet).type == REL)) |
((*s_objet).type == REL)) |
|
{ |
{ |
if ((*s_objet).type == INT) |
if ((*s_objet).type == INT) |
{ |
{ |
Line 365 instruction_then(struct_processus *s_eta
|
Line 409 instruction_then(struct_processus *s_eta
|
* THEN et ELSE ou END. |
* THEN et ELSE ou END. |
*/ |
*/ |
|
|
if (((*(*s_etat_processus).l_base_pile_systeme).clause != |
if (((*(*s_etat_processus).l_base_pile_systeme).clause == |
'K') && ((*(*s_etat_processus).l_base_pile_systeme) |
'I') || ((*(*s_etat_processus).l_base_pile_systeme).clause |
.clause != 'C')) |
== 'X')) |
{ |
{ |
(*(*s_etat_processus).l_base_pile_systeme).clause = 'T'; |
(*(*s_etat_processus).l_base_pile_systeme).clause = 'T'; |
} |
} |
else |
else |
{ |
{ |
(*(*s_etat_processus).l_base_pile_systeme).clause = 'Q'; |
if ((*s_etat_processus).l_base_pile_systeme == NULL) |
|
{ |
|
(*s_etat_processus).erreur_systeme = d_es_pile_vide; |
|
return; |
|
} |
|
|
|
l_element_courant = (*(*s_etat_processus).l_base_pile_systeme) |
|
.suivant; |
|
|
|
while(l_element_courant != NULL) |
|
{ |
|
if ((*l_element_courant).clause == 'K') |
|
{ |
|
(*l_element_courant).clause = 'Q'; |
|
break; |
|
} |
|
|
|
l_element_courant = (*l_element_courant).suivant; |
|
} |
} |
} |
} |
} |
else |
else |
Line 480 instruction_then(struct_processus *s_eta
|
Line 542 instruction_then(struct_processus *s_eta
|
} |
} |
else if (strcmp(instruction_majuscule, "END") == 0) |
else if (strcmp(instruction_majuscule, "END") == 0) |
{ |
{ |
|
instruction_end(s_etat_processus); |
drapeau_fin = d_vrai; |
drapeau_fin = d_vrai; |
} |
} |
else |
else |
Line 592 instruction_then(struct_processus *s_eta
|
Line 655 instruction_then(struct_processus *s_eta
|
if (((*(*s_etat_processus).l_base_pile_systeme) |
if (((*(*s_etat_processus).l_base_pile_systeme) |
.clause != 'K') && |
.clause != 'K') && |
((*(*s_etat_processus) |
((*(*s_etat_processus) |
.l_base_pile_systeme) .clause != 'C')) |
.l_base_pile_systeme).clause != 'C')) |
{ |
{ |
|
|
/* |
/* |
* Traitement de IF/THEN/ELSEIF/THEN/ |
* Traitement de IF/THEN/ELSEIF/THEN/ |
* ELSE/END |
* ELSE/END |
Line 640 instruction_then(struct_processus *s_eta
|
Line 702 instruction_then(struct_processus *s_eta
|
} |
} |
else if (fonction == instruction_end) |
else if (fonction == instruction_end) |
{ |
{ |
|
fonction(s_etat_processus); |
|
execution = d_vrai; |
drapeau_fin = d_vrai; |
drapeau_fin = d_vrai; |
} |
} |
else |
else |
Line 699 instruction_then(struct_processus *s_eta
|
Line 763 instruction_then(struct_processus *s_eta
|
} |
} |
|
|
liberation(s_etat_processus, s_objet); |
liberation(s_etat_processus, s_objet); |
|
|
return; |
return; |
} |
} |
|
|