version 1.1.1.1, 2010/01/26 15:22:45
|
version 1.76, 2023/08/07 17:42:49
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.0.9 |
RPL/2 (R) version 4.1.35 |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
Copyright (C) 1989-2023 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 57 analyse_algebrique(struct_processus *s_e
|
Line 57 analyse_algebrique(struct_processus *s_e
|
logical1 presence_fonction; |
logical1 presence_fonction; |
logical1 presence_liste; |
logical1 presence_liste; |
|
|
long k; |
|
|
|
unsigned char *chaine_arguments; |
unsigned char *chaine_arguments; |
unsigned char *chaine_centrale; |
unsigned char *chaine_centrale; |
unsigned char *chaine_droite; |
unsigned char *chaine_droite; |
Line 76 analyse_algebrique(struct_processus *s_e
|
Line 74 analyse_algebrique(struct_processus *s_e
|
unsigned char registre_test; |
unsigned char registre_test; |
unsigned char *sous_chaine_droite; |
unsigned char *sous_chaine_droite; |
unsigned char *sous_chaine_gauche; |
unsigned char *sous_chaine_gauche; |
unsigned char t0; |
|
unsigned char t1; |
|
unsigned char t2; |
|
unsigned char t3; |
|
unsigned char t4; |
|
unsigned char *tampon; |
unsigned char *tampon; |
|
|
unsigned long debut_zone_algebrique; |
int t0; |
unsigned long fin_zone_algebrique; |
int t1; |
unsigned long i; |
int t2; |
unsigned long j; |
int t3; |
unsigned long longueur_chaine; |
int t4; |
unsigned long longueur_tampon; |
|
unsigned long niveau; |
integer8 debut_zone_algebrique; |
unsigned long niveau_liste; |
integer8 fin_zone_algebrique; |
unsigned long nombre_apostrophes; |
integer8 i; |
unsigned long nombre_arguments; |
integer8 j; |
unsigned long priorite; |
integer8 k; |
|
integer8 longueur_chaine; |
|
integer8 longueur_tampon; |
|
integer8 niveau; |
|
integer8 niveau_liste; |
|
integer8 nombre_apostrophes; |
|
integer8 nombre_arguments; |
|
integer8 priorite; |
|
|
(*l_base_liste) = NULL; |
(*l_base_liste) = NULL; |
|
|
Line 106 analyse_algebrique(struct_processus *s_e
|
Line 106 analyse_algebrique(struct_processus *s_e
|
presence_liste = d_faux; |
presence_liste = d_faux; |
niveau_liste = 0; |
niveau_liste = 0; |
|
|
for(i = 1, chaine_invalide = d_vrai; i < strlen(chaine_algebrique) - 1; i++) |
for(i = 1, chaine_invalide = d_vrai; i < ((integer8) |
|
strlen(chaine_algebrique)) - 1; i++) |
{ |
{ |
if (chaine_algebrique[i] != ' ') |
if (chaine_algebrique[i] != ' ') |
{ |
{ |
Line 115 analyse_algebrique(struct_processus *s_e
|
Line 116 analyse_algebrique(struct_processus *s_e
|
|
|
if (chaine_algebrique[i] == '"') |
if (chaine_algebrique[i] == '"') |
{ |
{ |
presence_chaine = (presence_chaine == d_faux) ? d_vrai : d_faux; |
if (chaine_algebrique[i - 1] != '\\') |
|
{ |
|
presence_chaine = (presence_chaine == d_faux) ? d_vrai : d_faux; |
|
} |
} |
} |
else if (presence_chaine == d_faux) |
else if (presence_chaine == d_faux) |
{ |
{ |
Line 143 analyse_algebrique(struct_processus *s_e
|
Line 147 analyse_algebrique(struct_processus *s_e
|
* Transformation des "**" en "^ " |
* Transformation des "**" en "^ " |
*/ |
*/ |
|
|
for(i = 1; i < strlen(chaine_algebrique) - 1; i++) |
for(i = 1; i < ((integer8) strlen(chaine_algebrique)) - 1; i++) |
{ |
{ |
if (chaine_algebrique[i] == '*') |
if (chaine_algebrique[i] == '*') |
{ |
{ |
Line 176 analyse_algebrique(struct_processus *s_e
|
Line 180 analyse_algebrique(struct_processus *s_e
|
{ |
{ |
if ((*ptr1) == '"') |
if ((*ptr1) == '"') |
{ |
{ |
if (presence_chaine == d_faux) |
if (ptr1 != chaine_travail) |
{ |
{ // Il existe un caractère précédent. |
presence_chaine = d_vrai; |
if ((*(ptr1 - 1)) != '\\') |
|
{ |
|
if (presence_chaine == d_faux) |
|
{ |
|
presence_chaine = d_vrai; |
|
} |
|
else |
|
{ |
|
presence_chaine = d_faux; |
|
} |
|
} |
} |
} |
else |
else |
{ |
{ // Il n'existe pas de caractère précédent. |
presence_chaine = d_faux; |
if (presence_chaine == d_faux) |
|
{ |
|
presence_chaine = d_vrai; |
|
} |
|
else |
|
{ |
|
presence_chaine = d_faux; |
|
} |
} |
} |
} |
} |
|
|
Line 196 analyse_algebrique(struct_processus *s_e
|
Line 217 analyse_algebrique(struct_processus *s_e
|
{ |
{ |
instruction_test[5] = d_code_fin_chaine; |
instruction_test[5] = d_code_fin_chaine; |
|
|
instruction_majuscule = conversion_majuscule(strncpy( |
instruction_majuscule = conversion_majuscule( |
instruction_test, ptr1, 5)); |
s_etat_processus, strncpy(instruction_test, ptr1, 5)); |
|
|
if (instruction_majuscule == NULL) |
if (instruction_majuscule == NULL) |
{ |
{ |
Line 220 analyse_algebrique(struct_processus *s_e
|
Line 241 analyse_algebrique(struct_processus *s_e
|
for(i = 0; i < 4; (*(ptr2++)) = (*(ptr1++)), i++); |
for(i = 0; i < 4; (*(ptr2++)) = (*(ptr1++)), i++); |
(*(ptr2++)) = (*ptr1); |
(*(ptr2++)) = (*ptr1); |
} |
} |
else if ((strncmp(instruction_majuscule, " OR ", 4) == 0) && |
else if (strcmp(instruction_majuscule, " EQV ") == 0) |
(strlen(instruction_majuscule) == 4)) |
{ |
|
for(i = 0; i < 4; (*(ptr2++)) = (*(ptr1++)), i++); |
|
(*(ptr2++)) = (*ptr1); |
|
} |
|
else if ((strcmp(instruction_majuscule, " OR ") == 0)) |
{ |
{ |
for(i = 0; i < 3; (*(ptr2++)) = (*(ptr1++)), i++); |
for(i = 0; i < 3; (*(ptr2++)) = (*(ptr1++)), i++); |
(*(ptr2++)) = (*ptr1); |
(*(ptr2++)) = (*ptr1); |
Line 267 analyse_algebrique(struct_processus *s_e
|
Line 292 analyse_algebrique(struct_processus *s_e
|
} |
} |
else if (chaine_travail[i] == '"') |
else if (chaine_travail[i] == '"') |
{ |
{ |
presence_chaine = (presence_chaine == d_vrai) |
if (i > 0) |
? d_faux : d_vrai; |
{ |
|
if (chaine_travail[i - 1] != '\\') |
|
{ |
|
presence_chaine = (presence_chaine == d_vrai) |
|
? d_faux : d_vrai; |
|
} |
|
} |
|
else |
|
{ |
|
presence_chaine = (presence_chaine == d_vrai) |
|
? d_faux : d_vrai; |
|
} |
} |
} |
|
|
i++; |
i++; |
Line 305 analyse_algebrique(struct_processus *s_e
|
Line 341 analyse_algebrique(struct_processus *s_e
|
|
|
if (chaine_travail[j] == '"') |
if (chaine_travail[j] == '"') |
{ |
{ |
presence_chaine = (presence_chaine == d_vrai) |
if (j > 0) |
? d_faux : d_vrai; |
{ |
|
if (chaine_travail[j - 1] != '\\') |
|
{ |
|
presence_chaine = (presence_chaine == d_vrai) |
|
? d_faux : d_vrai; |
|
} |
|
} |
|
else |
|
{ |
|
presence_chaine = (presence_chaine == d_vrai) |
|
? d_faux : d_vrai; |
|
} |
} |
} |
|
|
j++; |
j++; |
Line 315 analyse_algebrique(struct_processus *s_e
|
Line 362 analyse_algebrique(struct_processus *s_e
|
if ((drapeau_debut_zone_valide == d_vrai) && |
if ((drapeau_debut_zone_valide == d_vrai) && |
(drapeau_fin_zone_valide == d_vrai)) |
(drapeau_fin_zone_valide == d_vrai)) |
{ |
{ |
chaine_gauche = purification_chaine( |
chaine_gauche = purification_chaine(s_etat_processus, |
extraction_chaine(chaine_travail, |
extraction_chaine(s_etat_processus, chaine_travail, |
1, debut_zone_algebrique)); |
1, debut_zone_algebrique)); |
chaine_centrale = purification_chaine( |
chaine_centrale = purification_chaine(s_etat_processus, |
extraction_chaine(chaine_travail, |
extraction_chaine(s_etat_processus, chaine_travail, |
debut_zone_algebrique + 1, fin_zone_algebrique + 1)); |
debut_zone_algebrique + 1, fin_zone_algebrique + 1)); |
chaine_droite = purification_chaine( |
chaine_droite = purification_chaine(s_etat_processus, |
extraction_chaine(chaine_travail, |
extraction_chaine(s_etat_processus, chaine_travail, |
fin_zone_algebrique + 2, strlen(chaine_travail))); |
fin_zone_algebrique + 2, |
|
(integer8) strlen(chaine_travail))); |
|
|
free(chaine_travail); |
free(chaine_travail); |
|
|
Line 352 analyse_algebrique(struct_processus *s_e
|
Line 400 analyse_algebrique(struct_processus *s_e
|
drapeau_elimination_parentheses = d_vrai; |
drapeau_elimination_parentheses = d_vrai; |
presence_chaine = d_faux; |
presence_chaine = d_faux; |
|
|
while(i < (strlen(chaine_centrale) - 1)) |
while(i < ((integer8) strlen(chaine_centrale)) - 1) |
{ |
{ |
if (chaine_centrale[i] == '"') |
if (chaine_centrale[i] == '"') |
{ |
{ |
presence_chaine = (presence_chaine == d_faux) |
if (i > 0) |
? d_vrai : d_faux; |
{ |
|
if (chaine_centrale[i - 1] != '\\') |
|
{ |
|
presence_chaine = (presence_chaine == d_faux) |
|
? d_vrai : d_faux; |
|
} |
|
} |
|
else |
|
{ |
|
presence_chaine = (presence_chaine == d_faux) |
|
? d_vrai : d_faux; |
|
} |
|
|
if (i == 1) |
if (i == 1) |
{ |
{ |
Line 414 analyse_algebrique(struct_processus *s_e
|
Line 473 analyse_algebrique(struct_processus *s_e
|
if ((test_expression_rpn(chaine_centrale) == d_vrai) && |
if ((test_expression_rpn(chaine_centrale) == d_vrai) && |
(fin_zone_algebrique - debut_zone_algebrique > 0)) |
(fin_zone_algebrique - debut_zone_algebrique > 0)) |
{ |
{ |
if ((tampon = purification_chaine( |
if ((tampon = purification_chaine(s_etat_processus, |
extraction_chaine(chaine_centrale, 2, |
extraction_chaine(s_etat_processus, |
strlen(chaine_centrale) - 1))) == NULL) |
chaine_centrale, 2, |
|
((integer8) strlen(chaine_centrale)) - 1))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = |
(*s_etat_processus).erreur_systeme = |
d_es_allocation_memoire; |
d_es_allocation_memoire; |
Line 473 analyse_algebrique(struct_processus *s_e
|
Line 533 analyse_algebrique(struct_processus *s_e
|
(fin_zone_algebrique - debut_zone_algebrique > 0)) |
(fin_zone_algebrique - debut_zone_algebrique > 0)) |
{ |
{ |
i = 1; |
i = 1; |
while((i < (strlen(chaine_centrale) - 1)) && |
while((i < ((integer8) strlen(chaine_centrale)) - 1) && |
(chaine_centrale[i] != '(')) |
(chaine_centrale[i] != '(')) |
{ |
{ |
i++; |
i++; |
} |
} |
|
|
j = strlen(chaine_centrale) - 1; |
j = ((integer8) strlen(chaine_centrale)) - 1; |
while(chaine_centrale[j] != ')') |
while(chaine_centrale[j] != ')') |
{ |
{ |
j--; |
j--; |
} |
} |
|
|
chaine_fonction = purification_chaine( |
chaine_fonction = purification_chaine(s_etat_processus, |
extraction_chaine(chaine_centrale, 2, i)); |
extraction_chaine(s_etat_processus, |
chaine_arguments = purification_chaine( |
chaine_centrale, 2, i)); |
extraction_chaine(chaine_centrale, i + 2, j)); |
chaine_arguments = purification_chaine(s_etat_processus, |
|
extraction_chaine(s_etat_processus, |
|
chaine_centrale, i + 2, j)); |
|
|
i = 0; |
i = 0; |
niveau = 0; |
niveau = 0; |
Line 509 analyse_algebrique(struct_processus *s_e
|
Line 571 analyse_algebrique(struct_processus *s_e
|
if ((chaine_arguments[i] == ',') && (niveau == 0)) |
if ((chaine_arguments[i] == ',') && (niveau == 0)) |
{ |
{ |
sous_chaine_gauche = purification_chaine( |
sous_chaine_gauche = purification_chaine( |
extraction_chaine(chaine_arguments, 1, i)); |
s_etat_processus, |
|
extraction_chaine(s_etat_processus, |
|
chaine_arguments, 1, i)); |
sous_chaine_droite = purification_chaine( |
sous_chaine_droite = purification_chaine( |
extraction_chaine(chaine_arguments, i + 2, |
s_etat_processus, |
strlen(chaine_arguments))); |
extraction_chaine(s_etat_processus, |
|
chaine_arguments, i + 2, |
|
((integer8) strlen(chaine_arguments)))); |
|
|
free(chaine_arguments); |
free(chaine_arguments); |
|
|
Line 595 analyse_algebrique(struct_processus *s_e
|
Line 661 analyse_algebrique(struct_processus *s_e
|
(*s_etat_processus).instruction_valide = |
(*s_etat_processus).instruction_valide = |
registre_instruction_valide; |
registre_instruction_valide; |
|
|
if (((unsigned long) (*s_etat_processus) |
if (((*s_etat_processus).nombre_arguments != |
.nombre_arguments != nombre_arguments) && |
nombre_arguments) && |
((*s_etat_processus).nombre_arguments != -2)) |
((*s_etat_processus).nombre_arguments != -2)) |
{ |
{ |
(*s_etat_processus).erreur_execution = |
(*s_etat_processus).erreur_execution = |
Line 621 analyse_algebrique(struct_processus *s_e
|
Line 687 analyse_algebrique(struct_processus *s_e
|
(*l_element_courant).suivant = (*l_base_liste); |
(*l_element_courant).suivant = (*l_base_liste); |
(*l_base_liste) = l_element_courant; |
(*l_base_liste) = l_element_courant; |
|
|
if ((s_fonction = allocation(s_etat_processus, FCT)) |
if ((s_fonction = malloc(sizeof(struct_fonction))) |
== NULL) |
== NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = |
(*s_etat_processus).erreur_systeme = |
Line 727 analyse_algebrique(struct_processus *s_e
|
Line 793 analyse_algebrique(struct_processus *s_e
|
} while((drapeau_debut_zone_valide == d_vrai) |
} while((drapeau_debut_zone_valide == d_vrai) |
&& (drapeau_fin_zone_valide == d_vrai)); |
&& (drapeau_fin_zone_valide == d_vrai)); |
|
|
for(longueur_chaine = strlen(chaine_travail), |
for(longueur_chaine = (integer8) strlen(chaine_travail), |
i = nombre_apostrophes = 0; i < longueur_chaine; |
i = nombre_apostrophes = 0; i < longueur_chaine; |
nombre_apostrophes += (chaine_travail[i++] == '\'') ? 1 : 0); |
nombre_apostrophes += (chaine_travail[i++] == '\'') ? 1 : 0); |
|
|
Line 763 analyse_algebrique(struct_processus *s_e
|
Line 829 analyse_algebrique(struct_processus *s_e
|
|
|
if ((chaine_travail[i] != 0) && (j != 0)) |
if ((chaine_travail[i] != 0) && (j != 0)) |
{ |
{ |
chaine_gauche = purification_chaine( |
chaine_gauche = purification_chaine(s_etat_processus, |
extraction_chaine(chaine_travail, 1, i)); |
extraction_chaine(s_etat_processus, |
chaine_centrale = purification_chaine( |
chaine_travail, 1, i)); |
extraction_chaine(chaine_travail, |
chaine_centrale = purification_chaine(s_etat_processus, |
|
extraction_chaine(s_etat_processus, chaine_travail, |
i + 1, j + 1)); |
i + 1, j + 1)); |
chaine_droite = purification_chaine( |
chaine_droite = purification_chaine(s_etat_processus, |
extraction_chaine(chaine_travail, j + 2, |
extraction_chaine(s_etat_processus, chaine_travail, |
strlen(chaine_travail))); |
j + 2, ((integer8) strlen(chaine_travail)))); |
|
|
if ((chaine_gauche == NULL) || (chaine_centrale == NULL) || |
if ((chaine_gauche == NULL) || (chaine_centrale == NULL) || |
(chaine_droite == NULL)) |
(chaine_droite == NULL)) |
Line 782 analyse_algebrique(struct_processus *s_e
|
Line 849 analyse_algebrique(struct_processus *s_e
|
|
|
drapeau_elimination_parentheses = d_vrai; |
drapeau_elimination_parentheses = d_vrai; |
|
|
if ((longueur_tampon = strlen(chaine_centrale)) != 0) |
if ((longueur_tampon = ((integer8) strlen(chaine_centrale))) |
|
!= 0) |
{ |
{ |
niveau = 0; |
niveau = 0; |
|
|
Line 810 analyse_algebrique(struct_processus *s_e
|
Line 878 analyse_algebrique(struct_processus *s_e
|
|
|
if (drapeau_elimination_parentheses == d_vrai) |
if (drapeau_elimination_parentheses == d_vrai) |
{ |
{ |
if ((tampon = (unsigned char *) malloc( |
if ((tampon = (unsigned char *) malloc(((size_t) |
((longueur_tampon = strlen( |
((longueur_tampon = (integer8) strlen( |
chaine_centrale)) + 1) * sizeof( |
chaine_centrale)) + 1)) * sizeof( |
unsigned char))) == NULL) |
unsigned char))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = |
(*s_etat_processus).erreur_systeme = |
Line 838 analyse_algebrique(struct_processus *s_e
|
Line 906 analyse_algebrique(struct_processus *s_e
|
} |
} |
|
|
tampon[0] = d_code_fin_chaine; |
tampon[0] = d_code_fin_chaine; |
longueur_chaine = strlen(chaine_centrale); |
longueur_chaine = (integer8) strlen(chaine_centrale); |
|
k = ((integer8) strlen(chaine_centrale)) - 1; |
niveau = 0; |
niveau = 0; |
k = strlen(chaine_centrale) - 1; |
|
fin_boucle_extraction = d_faux; |
fin_boucle_extraction = d_faux; |
|
|
while((k >= 0) && (fin_boucle_extraction == |
while((k >= 0) && (fin_boucle_extraction == d_faux)) |
d_faux)) |
|
{ |
{ |
t0 = ((size_t) k < strlen(chaine_centrale)) |
t0 = (k < ((integer8) strlen(chaine_centrale))) |
? chaine_centrale[k + 1] : ' '; |
? chaine_centrale[k + 1] : ' '; |
t1 = chaine_centrale[k]; |
t1 = chaine_centrale[k]; |
t2 = (k < 1) ? ' ' : chaine_centrale[k - 1]; |
t2 = (k < 1) ? ' ' : chaine_centrale[k - 1]; |
Line 885 analyse_algebrique(struct_processus *s_e
|
Line 952 analyse_algebrique(struct_processus *s_e
|
|
|
if (niveau == 0) |
if (niveau == 0) |
{ |
{ |
prologue = purification_chaine( |
prologue = purification_chaine(s_etat_processus, |
extraction_chaine(chaine_centrale, 1, k)); |
extraction_chaine(s_etat_processus, |
epilogue = purification_chaine( |
chaine_centrale, 1, k)); |
extraction_chaine(chaine_centrale, |
epilogue = purification_chaine(s_etat_processus, |
k + 2, longueur_chaine)); |
extraction_chaine(s_etat_processus, |
|
chaine_centrale, k + 2, longueur_chaine)); |
|
|
if ((prologue == NULL) || (epilogue == NULL)) |
if ((prologue == NULL) || (epilogue == NULL)) |
{ |
{ |
Line 974 analyse_algebrique(struct_processus *s_e
|
Line 1042 analyse_algebrique(struct_processus *s_e
|
drapeau_modification = d_vrai; |
drapeau_modification = d_vrai; |
} |
} |
else if (((priorite == 1) && (t4 == ' ') && |
else if (((priorite == 1) && (t4 == ' ') && |
(t3 == 'X') && (t2 == 'O') && (t1 == 'R') |
(((t3 == 'X') && (t2 == 'O') && (t1 == 'R')) |
&& (t0 == ' ')) || ((priorite == 2) && |
|| ((t3 == 'E') && (t2 == 'Q') && |
|
(t1 == 'V'))) && (t0 == ' ')) |
|
|| ((priorite == 2) && |
(t4 == ' ') && (t3 == 'A') && (t2 == 'N') |
(t4 == ' ') && (t3 == 'A') && (t2 == 'N') |
&& (t1 == 'D') && (t0 == ' '))) |
&& (t1 == 'D') && (t0 == ' '))) |
{ |
{ |
Line 1093 analyse_algebrique(struct_processus *s_e
|
Line 1163 analyse_algebrique(struct_processus *s_e
|
|
|
|
|
unsigned char * |
unsigned char * |
purification_chaine(unsigned char *chaine) |
purification_chaine(struct_processus *s_etat_processus, unsigned char *chaine) |
{ |
{ |
long i; |
integer8 i; |
long j; |
integer8 j; |
|
|
unsigned char *chaine_purifiee; |
unsigned char *chaine_purifiee; |
|
|
|
if (chaine == NULL) |
|
{ |
|
return(NULL); |
|
} |
|
|
i = 0; |
i = 0; |
j = strlen(chaine) - 1; |
j = ((integer8) strlen(chaine)) - 1; |
|
|
while(chaine[i] == ' ') |
while(chaine[i] == ' ') |
{ |
{ |
Line 1124 purification_chaine(unsigned char *chain
|
Line 1199 purification_chaine(unsigned char *chain
|
} |
} |
} |
} |
|
|
chaine_purifiee = extraction_chaine(chaine, i + 1, j + 1); |
chaine_purifiee = extraction_chaine(s_etat_processus, chaine, i + 1, j + 1); |
free(chaine); |
free(chaine); |
|
|
return(chaine_purifiee); |
return(chaine_purifiee); |
Line 1134 purification_chaine(unsigned char *chain
|
Line 1209 purification_chaine(unsigned char *chain
|
logical1 |
logical1 |
test_expression_rpn(unsigned char *chaine) |
test_expression_rpn(unsigned char *chaine) |
{ |
{ |
long j; |
int t; |
|
int t0; |
unsigned char t; |
int t1; |
unsigned char t0; |
int t2; |
unsigned char t1; |
int t3; |
unsigned char t2; |
int t4; |
unsigned char t3; |
|
unsigned char t4; |
integer8 compteur; |
|
integer8 longueur_chaine; |
unsigned long compteur; |
integer8 i; |
unsigned long longueur_chaine; |
integer8 j; |
unsigned long i; |
integer8 niveau; |
unsigned long niveau; |
|
|
|
/* |
/* |
* On teste d'abord la chaîne pour vérifier qu'il n'y a pas de fonction |
* On teste d'abord la chaîne pour vérifier qu'il n'y a pas de fonction |
Line 1155 test_expression_rpn(unsigned char *chain
|
Line 1229 test_expression_rpn(unsigned char *chain
|
|
|
compteur = 0; |
compteur = 0; |
|
|
for(longueur_chaine = strlen(chaine), i = 1; i < longueur_chaine; i++) |
for(longueur_chaine = ((integer8) strlen(chaine)), i = 1; |
|
i < longueur_chaine; i++) |
{ |
{ |
/* |
/* |
* On saute les chaînes de caractères |
* On saute les chaînes de caractères |
Line 1164 test_expression_rpn(unsigned char *chain
|
Line 1239 test_expression_rpn(unsigned char *chain
|
if (chaine[i - 1] == '"') |
if (chaine[i - 1] == '"') |
{ |
{ |
i++; |
i++; |
while(chaine[i - 1] != '"') |
while(!((chaine[i - 1] == '"') && (chaine[i - 2] != '\\'))) |
{ |
{ |
i++; |
i++; |
} |
} |
} |
} |
|
|
j = ((long) i) - 2; |
j = i - 2; |
t0 = (i >= 2) ? chaine[i - 2] : '?'; |
t0 = (i >= 2) ? chaine[i - 2] : '?'; |
t1 = chaine[i - 1]; |
t1 = chaine[i - 1]; |
t2 = chaine[i]; |
t2 = chaine[i]; |
t3 = ((i + 1) < strlen(chaine)) ? chaine[i + 1] : '?'; |
t3 = ((i + 1) < ((integer8) strlen(chaine))) ? chaine[i + 1] : '?'; |
t4 = ((i + 2) < strlen(chaine)) ? chaine[i + 2] : '?'; |
t4 = ((i + 2) < ((integer8) strlen(chaine))) ? chaine[i + 2] : '?'; |
|
|
/* |
/* |
* Ouverture d'une parenthèse signalant une fonction |
* Ouverture d'une parenthèse signalant une fonction |
Line 1218 test_expression_rpn(unsigned char *chain
|
Line 1293 test_expression_rpn(unsigned char *chain
|
|| ((t0 == ' ') && ((t1 == 'A') || (t1 == 'a')) && |
|| ((t0 == ' ') && ((t1 == 'A') || (t1 == 'a')) && |
((t2 == 'N') || (t2 == 'n')) && ((t3 == 'D') || (t3 == 'd')) |
((t2 == 'N') || (t2 == 'n')) && ((t3 == 'D') || (t3 == 'd')) |
&& (t4 == ' ')) || |
&& (t4 == ' ')) || |
|
((t0 == ' ') && ((t1 == 'E') || (t1 == 'e')) && |
|
((t2 == 'Q') || (t2 == 'q')) && ((t3 == 'V') || (t3 == 'v')) |
|
&& (t4 == ' ')) || |
((t0 == ' ') && ((t1 == 'O') || (t1 == 'o')) && |
((t0 == ' ') && ((t1 == 'O') || (t1 == 'o')) && |
((t2 == 'R') || (t2 == 'r')) && (t3 == ' ')) || |
((t2 == 'R') || (t2 == 'r')) && (t3 == ' ')) || |
((t0 == ' ') && ((t1 == 'X') || (t1 == 'x')) && |
((t0 == ' ') && ((t1 == 'X') || (t1 == 'x')) && |
Line 1254 test_fonction(unsigned char *chaine)
|
Line 1332 test_fonction(unsigned char *chaine)
|
{ |
{ |
logical1 drapeau_fonction; |
logical1 drapeau_fonction; |
|
|
unsigned char t; |
int t; |
|
|
unsigned long compteur; |
integer8 compteur; |
unsigned long i; |
integer8 i; |
unsigned long longueur_chaine; |
integer8 longueur_chaine; |
|
|
longueur_chaine = strlen(chaine); |
longueur_chaine = (integer8) strlen(chaine); |
i = 1; |
i = 1; |
|
|
while(((t = chaine[i]) != '(') && (i < (longueur_chaine - 1))) |
while(((t = chaine[i]) != '(') && (i < (longueur_chaine - 1))) |
Line 1303 test_fonction(unsigned char *chaine)
|
Line 1381 test_fonction(unsigned char *chaine)
|
|
|
|
|
unsigned char * |
unsigned char * |
extraction_chaine(unsigned char *chaine, unsigned long position_1, |
extraction_chaine(struct_processus *s_etat_processus, |
unsigned long position_2) |
unsigned char *chaine, integer8 position_1, integer8 position_2) |
{ |
{ |
long i; |
integer8 i; |
|
|
unsigned char *pointeur_ecriture; |
unsigned char *pointeur_ecriture; |
unsigned char *pointeur_lecture; |
unsigned char *pointeur_lecture; |
unsigned char *sous_chaine; |
unsigned char *sous_chaine; |
|
|
if ((position_1 < 1) || (position_2 < position_1) || |
if ((position_1 < 1) || (position_2 < position_1) || |
(position_2 > strlen(chaine))) |
(position_2 > ((integer8) strlen(chaine)))) |
{ |
{ |
if ((sous_chaine = (unsigned char *) malloc(sizeof(unsigned char))) |
if ((sous_chaine = (unsigned char *) malloc(sizeof(unsigned char))) |
== NULL) |
== NULL) |
Line 1326 extraction_chaine(unsigned char *chaine,
|
Line 1404 extraction_chaine(unsigned char *chaine,
|
} |
} |
|
|
if ((sous_chaine = (unsigned char *) |
if ((sous_chaine = (unsigned char *) |
malloc((position_2 - position_1 + 2) * sizeof(unsigned char))) |
malloc(((size_t) (position_2 - position_1 + 2)) * |
== NULL) |
sizeof(unsigned char))) == NULL) |
{ |
{ |
|
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
return(NULL); |
return(NULL); |
} |
} |
|
|