--- rpl/src/compilation.c 2015/01/28 20:58:02 1.74 +++ rpl/src/compilation.c 2016/09/27 15:29:32 1.86 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.20 - Copyright (C) 1989-2015 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.26 + Copyright (C) 1989-2016 Dr. BERTRAND Joël This file is part of RPL/2. @@ -997,7 +997,6 @@ recherche_instruction_suivante_recursive (drapeau_fin_objet == d_faux) && (erreur_analyse == d_ex) && (erreur_format == d_ex)) { -uprintf("%c", *pointeur_caractere_courant); switch(*pointeur_caractere_courant++) { case ']' : @@ -1490,19 +1489,30 @@ uprintf("%c", *pointeur_caractere_couran pointeur_caractere_courant++; } - if ((*pointeur_caractere_courant) == '>') + if (((*pointeur_caractere_courant) == '>') && + ((*(pointeur_caractere_courant - 1)) == + d_code_espace)) { - if ((*(++pointeur_caractere_courant)) == '>') - { + pointeur_caractere_courant++; + + if ((*pointeur_caractere_courant) == '>') + { // Cas de '>>' drapeau_fin_objet = d_vrai; + pointeur_caractere_courant++; + break; } - else - { + else if ((*pointeur_caractere_courant) == '=') + { // Cas de '>=' + pointeur_caractere_courant++; + } + else if ((*pointeur_caractere_courant) != + d_code_espace) + { // Tous les cas différents de '>' erreur_analyse = d_ex_syntaxe; + break; } - pointeur_caractere_courant++; - break; + pointeur_caractere_courant--; } if ((erreur_format == d_absence_erreur) && @@ -1640,18 +1650,15 @@ uprintf("%c", *pointeur_caractere_couran if ((*(pointeur_caractere_courant - 1)) == caractere_fin) { -uprintf(" > cas 1"); // Cas des objets composites (LST, RPN, TBL) break; } else if ((*pointeur_caractere_courant) == caractere_fin) { -uprintf(" > cas 2"); // Condition pour traiter les cas 123} break; } } -uprintf("\n"); pointeur_fin_instruction = pointeur_caractere_courant; @@ -1703,6 +1710,11 @@ uprintf("\n"); erreur = ((erreur_analyse == d_ex) && (erreur_format == d_ex)) ? d_absence_erreur : d_erreur; (*s_etat_processus).erreur_execution = erreur_analyse; + + if ((*s_etat_processus).erreur_execution == d_ex) + { + (*s_etat_processus).erreur_execution = erreur_format; + } } else { @@ -1712,7 +1724,6 @@ uprintf("\n"); (*s_etat_processus).position_courante = pointeur_fin_instruction - (*s_etat_processus).definitions_chainees; -uprintf("'%s'\n", (*s_etat_processus).instruction_courante); return(erreur); }