--- rpl/src/types.c 2014/07/17 08:07:27 1.66 +++ rpl/src/types.c 2014/07/24 14:38:44 1.67 @@ -38,6 +38,8 @@ void recherche_type(struct_processus *s_etat_processus) { + enum t_type registre_type; + integer8 i; integer8 j; integer8 niveau; @@ -274,7 +276,6 @@ recherche_type(struct_processus *s_etat_ element = (void *) ((struct_complexe16 *) malloc( sizeof(struct_complexe16))); - if (element == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; (*s_etat_processus).traitement_interruptible = @@ -1083,6 +1084,21 @@ recherche_type(struct_processus *s_etat_ case d_faux : { + registre_type = (*s_etat_processus).type_en_cours; + + if (drapeau_complexe == d_vrai) + { + (*s_etat_processus).type_en_cours = VCX; + } + else if (drapeau_reel == d_vrai) + { + (*s_etat_processus).type_en_cours = VRL; + } + else + { + (*s_etat_processus).type_en_cours = VIN; + } + /* -- Sauvegarde des paramètres du processus pour analyser le vecteur ------------- @@ -1491,6 +1507,7 @@ recherche_type(struct_processus *s_etat_ (*s_objet).type = VIN; } + (*s_etat_processus).type_en_cours = registre_type; break; } @@ -1502,6 +1519,21 @@ recherche_type(struct_processus *s_etat_ case d_vrai : { + registre_type = (*s_etat_processus).type_en_cours; + + if (drapeau_complexe == d_vrai) + { + (*s_etat_processus).type_en_cours = MCX; + } + else if (drapeau_reel == d_vrai) + { + (*s_etat_processus).type_en_cours = MRL; + } + else + { + (*s_etat_processus).type_en_cours = MIN; + } + nombre_lignes--; sauvegarde_longueur_definitions_chainees = @@ -2121,6 +2153,7 @@ recherche_type(struct_processus *s_etat_ fflush(stdout); } + (*s_etat_processus).type_en_cours = registre_type; break; } } @@ -2136,6 +2169,9 @@ recherche_type(struct_processus *s_etat_ case '{' : { + registre_type = (*s_etat_processus).type_en_cours; + (*s_etat_processus).type_en_cours = LST; + sauvegarde_longueur_definitions_chainees = (*s_etat_processus).longueur_definitions_chainees; @@ -2517,6 +2553,7 @@ recherche_type(struct_processus *s_etat_ (*s_objet).type = LST; element = (void *) l_element_courant; + (*s_etat_processus).type_en_cours = registre_type; break; } @@ -2911,10 +2948,13 @@ recherche_type(struct_processus *s_etat_ case '<' : { + registre_type = (*s_etat_processus).type_en_cours; + if ((*s_etat_processus).instruction_courante[1] == '[') { // Tableau + (*s_etat_processus).type_en_cours = TBL; sauvegarde_longueur_definitions_chainees = (*s_etat_processus).longueur_definitions_chainees; @@ -3183,6 +3223,8 @@ recherche_type(struct_processus *s_etat_ { // Définition + (*s_etat_processus).type_en_cours = RPN; + if (strlen((*s_etat_processus).instruction_courante) < 5) { liberation(s_etat_processus, s_objet); @@ -3242,6 +3284,7 @@ recherche_type(struct_processus *s_etat_ } } + (*s_etat_processus).type_en_cours = registre_type; break; }