version 1.40, 2012/01/30 09:25:13
|
version 1.49, 2012/09/29 17:53:02
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.6 |
RPL/2 (R) version 4.1.10 |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 364 analyse_syntaxique(struct_processus *s_e
|
Line 364 analyse_syntaxique(struct_processus *s_e
|
enum t_condition { AN_IF = 1, AN_IFERR, AN_THEN, AN_ELSE, AN_ELSEIF, |
enum t_condition { AN_IF = 1, AN_IFERR, AN_THEN, AN_ELSE, AN_ELSEIF, |
AN_END, AN_DO, AN_UNTIL, AN_WHILE, AN_REPEAT, AN_SELECT, |
AN_END, AN_DO, AN_UNTIL, AN_WHILE, AN_REPEAT, AN_SELECT, |
AN_CASE, AN_DEFAULT, AN_UP, AN_DOWN, AN_FOR, AN_START, |
AN_CASE, AN_DEFAULT, AN_UP, AN_DOWN, AN_FOR, AN_START, |
AN_NEXT, AN_STEP }; |
AN_NEXT, AN_STEP, AN_CRITICAL, AN_FORALL }; |
|
|
unsigned char *instruction; |
unsigned char *instruction; |
unsigned char registre; |
unsigned char registre; |
Line 514 analyse_syntaxique(struct_processus *s_e
|
Line 514 analyse_syntaxique(struct_processus *s_e
|
|
|
l_base_pile = l_nouvelle_base_pile; |
l_base_pile = l_nouvelle_base_pile; |
} |
} |
|
else if (strcmp(instruction, "CRITICAL") == 0) |
|
{ |
|
if ((l_nouvelle_base_pile = empilement_analyse(l_base_pile, |
|
AN_CRITICAL)) == NULL) |
|
{ |
|
liberation_analyse(l_base_pile); |
|
|
|
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
|
return(d_erreur); |
|
} |
|
|
|
l_base_pile = l_nouvelle_base_pile; |
|
} |
else if (strcmp(instruction, "THEN") == 0) |
else if (strcmp(instruction, "THEN") == 0) |
{ |
{ |
if ((test_analyse(l_base_pile, AN_IF) == d_faux) && |
if ((test_analyse(l_base_pile, AN_IF) == d_faux) && |
Line 572 analyse_syntaxique(struct_processus *s_e
|
Line 585 analyse_syntaxique(struct_processus *s_e
|
(test_analyse(l_base_pile, AN_DEFAULT) == d_faux) && |
(test_analyse(l_base_pile, AN_DEFAULT) == d_faux) && |
(test_analyse(l_base_pile, AN_SELECT) == d_faux) && |
(test_analyse(l_base_pile, AN_SELECT) == d_faux) && |
(test_analyse(l_base_pile, AN_THEN) == d_faux) && |
(test_analyse(l_base_pile, AN_THEN) == d_faux) && |
|
(test_analyse(l_base_pile, AN_CRITICAL) == d_faux) && |
(test_analyse(l_base_pile, AN_ELSE) == d_faux)) |
(test_analyse(l_base_pile, AN_ELSE) == d_faux)) |
{ |
{ |
liberation_analyse(l_base_pile); |
liberation_analyse(l_base_pile); |
Line 753 analyse_syntaxique(struct_processus *s_e
|
Line 767 analyse_syntaxique(struct_processus *s_e
|
|
|
l_base_pile = l_nouvelle_base_pile; |
l_base_pile = l_nouvelle_base_pile; |
} |
} |
|
else if (strcmp(instruction, "FORALL") == 0) |
|
{ |
|
if ((l_nouvelle_base_pile = empilement_analyse(l_base_pile, |
|
AN_FORALL)) == NULL) |
|
{ |
|
liberation_analyse(l_base_pile); |
|
|
|
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
|
return(d_erreur); |
|
} |
|
|
|
l_base_pile = l_nouvelle_base_pile; |
|
} |
else if (strcmp(instruction, "NEXT") == 0) |
else if (strcmp(instruction, "NEXT") == 0) |
{ |
{ |
if ((test_analyse(l_base_pile, AN_FOR) == d_faux) && |
if ((test_analyse(l_base_pile, AN_FOR) == d_faux) && |
|
(test_analyse(l_base_pile, AN_FORALL) == d_faux) && |
(test_analyse(l_base_pile, AN_START) == d_faux)) |
(test_analyse(l_base_pile, AN_START) == d_faux)) |
{ |
{ |
liberation_analyse(l_base_pile); |
liberation_analyse(l_base_pile); |
Line 863 readline_analyse_syntaxique(int count, i
|
Line 891 readline_analyse_syntaxique(int count, i
|
registre = ligne; |
registre = ligne; |
|
|
if ((ligne = malloc((strlen(registre) |
if ((ligne = malloc((strlen(registre) |
+ strlen(rl_line_buffer) + 1) * sizeof(char))) == NULL) |
+ strlen(rl_line_buffer) + 2) * sizeof(char))) == NULL) |
{ |
{ |
rl_done = 1; |
rl_done = 1; |
return(0); |
return(0); |
} |
} |
|
|
sprintf(ligne, "%s%s", registre, rl_line_buffer); |
sprintf(ligne, "%s %s", registre, rl_line_buffer); |
} |
} |
|
|
rl_replace_line("", 1); |
rl_replace_line("", 1); |
Line 930 readline_effacement(int count, int key)
|
Line 958 readline_effacement(int count, int key)
|
ligne = NULL; |
ligne = NULL; |
niveau = 0; |
niveau = 0; |
|
|
uprintf("annulation\n"); |
uprintf("^G\n"); |
rl_expand_prompt("RPL/2> "); |
rl_expand_prompt("RPL/2> "); |
rl_on_new_line(); |
rl_on_new_line(); |
return(0); |
return(0); |
} |
} |
|
|
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Routine d'échange de deux variables |
Routine d'échange de deux variables |