version 1.93, 2018/05/30 09:27:31
|
version 1.105, 2025/04/15 10:17:50
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.29 |
RPL/2 (R) version 4.1.36 |
Copyright (C) 1989-2018 Dr. BERTRAND Joël |
Copyright (C) 1989-2025 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 951 recherche_instruction_suivante_recursive
|
Line 951 recherche_instruction_suivante_recursive
|
} |
} |
|
|
case TBL: |
case TBL: |
|
case REC: |
{ |
{ |
caractere_fin = ']'; |
caractere_fin = ']'; |
break; |
break; |
Line 1697 recherche_instruction_suivante_recursive
|
Line 1698 recherche_instruction_suivante_recursive
|
|
|
break; |
break; |
} |
} |
|
|
|
case '|' : |
|
{ |
|
if ((*pointeur_caractere_courant) == '[') |
|
{ // Cas |[ ]| |
|
if (pointeur_debut_instruction != |
|
(pointeur_caractere_courant - 1)) |
|
{ |
|
erreur_format = d_ex_syntaxe; |
|
} |
|
|
|
pointeur_caractere_courant++; |
|
drapeau_fin_objet = d_faux; |
|
|
|
while(((*pointeur_caractere_courant) != d_code_fin_chaine) |
|
&& (erreur_format == d_absence_erreur)) |
|
{ |
|
while((*pointeur_caractere_courant) == d_code_espace) |
|
{ |
|
pointeur_caractere_courant++; |
|
} |
|
|
|
if ((*pointeur_caractere_courant) == ']') |
|
{ |
|
if ((*(++pointeur_caractere_courant)) == '|') |
|
{ |
|
drapeau_fin_objet = d_vrai; |
|
} |
|
else |
|
{ |
|
erreur_analyse = d_ex_syntaxe; |
|
} |
|
|
|
pointeur_caractere_courant++; |
|
break; |
|
} |
|
|
|
if ((erreur_format == d_absence_erreur) && |
|
(drapeau_fin_objet == d_faux)) |
|
{ |
|
(*s_etat_processus).position_courante = |
|
pointeur_caractere_courant |
|
- (*s_etat_processus).definitions_chainees; |
|
|
|
registre_type_en_cours = (*s_etat_processus) |
|
.type_en_cours; |
|
(*s_etat_processus).type_en_cours = REC; |
|
|
|
if ((erreur = |
|
recherche_instruction_suivante_recursive( |
|
s_etat_processus, recursivite + 1)) |
|
!= d_absence_erreur) |
|
{ |
|
(*s_etat_processus).type_en_cours = |
|
registre_type_en_cours; |
|
|
|
if ((*s_etat_processus).instruction_courante |
|
!= NULL) |
|
{ |
|
free((*s_etat_processus) |
|
.instruction_courante); |
|
(*s_etat_processus).instruction_courante |
|
= NULL; |
|
} |
|
|
|
return(d_erreur); |
|
} |
|
|
|
(*s_etat_processus).type_en_cours = |
|
registre_type_en_cours; |
|
pointeur_caractere_courant = (*s_etat_processus) |
|
.definitions_chainees + (*s_etat_processus) |
|
.position_courante; |
|
|
|
free((*s_etat_processus).instruction_courante); |
|
} |
|
} |
|
|
|
if (drapeau_fin_objet == d_faux) |
|
{ |
|
erreur_analyse = d_ex_syntaxe; |
|
drapeau_fin_objet = d_vrai; |
|
} |
|
} |
|
|
|
break; |
|
} |
} |
} |
|
|
if ((*(pointeur_caractere_courant - 1)) == caractere_fin) |
if ((*(pointeur_caractere_courant - 1)) == caractere_fin) |
{ |
{ |
// Cas des objets composites (LST, RPN, TBL) |
// Cas des objets composites (LST, RPN, TBL, REC) |
break; |
break; |
} |
} |
else if ((*pointeur_caractere_courant) == caractere_fin) |
else if ((*pointeur_caractere_courant) == caractere_fin) |