easy partiel
This commit is contained in:
@@ -31,16 +31,16 @@ int codeSymbole[] = {
|
||||
};
|
||||
|
||||
char *tableMotsClefs[] = {
|
||||
"si", "alors", "sinon", "tantque", "faire", "entier", "retour", "lire", "ecrire", '\0'
|
||||
"si", "alors", "sinon", "tantque", "faire", "entier", "retour", "lire", "ecrire", "pour", '\0'
|
||||
};
|
||||
|
||||
int codeMotClefs[] = {
|
||||
SI, ALORS, SINON, TANTQUE, FAIRE, ENTIER, RETOUR, LIRE, ECRIRE
|
||||
SI, ALORS, SINON, TANTQUE, FAIRE, ENTIER, RETOUR, LIRE, ECRIRE, POUR
|
||||
};
|
||||
|
||||
char yytext[YYTEXT_MAX];
|
||||
int yyleng;
|
||||
int nbMotsClefs = 9;
|
||||
int nbMotsClefs = 10;
|
||||
/* Compter les lignes pour afficher les messages d'erreur avec numero ligne */
|
||||
int nb_ligne = 1;
|
||||
|
||||
|
||||
@@ -44,11 +44,11 @@ void syntaxErrorMsg( const char * msg )
|
||||
void programme() {
|
||||
openSection( __func__ );
|
||||
|
||||
if( est_premier( _optDecVariables_, uniteCourante ) || est_premier( _listeDecFonctions_, uniteCourante )) {
|
||||
if( !est_premier( _optDecVariables_, uniteCourante ) && !est_premier( _listeDecFonctions_, uniteCourante ) && !est_suivant( _listeDecFonctions_, uniteCourante )) {
|
||||
syntaxError();
|
||||
} else {
|
||||
optDecVariables();
|
||||
listeDecFonctions();
|
||||
} else if ( !est_suivant( _listeDecFonctions_, uniteCourante ) ) {
|
||||
syntaxError();
|
||||
}
|
||||
|
||||
closeSection( __func__ );
|
||||
@@ -234,6 +234,8 @@ void instruction() {
|
||||
instructionRetour();
|
||||
} else if( est_premier( _instructionEcriture_, uniteCourante ) ) {
|
||||
instructionEcriture();
|
||||
} else if( est_premier( _instructionPour_, uniteCourante ) ) {
|
||||
instructionPour();
|
||||
} else if( est_premier( _instructionVide_, uniteCourante ) ) {
|
||||
instructionVide();
|
||||
} else {
|
||||
@@ -447,6 +449,42 @@ void instructionEcriture() {
|
||||
closeSection( __func__ );
|
||||
}
|
||||
|
||||
void instructionPour() {
|
||||
openSection( __func__ );
|
||||
|
||||
if( uniteCourante == POUR ) {
|
||||
elementConsome();
|
||||
uniteCourante = yylex();
|
||||
|
||||
instructionAffect();
|
||||
expression();
|
||||
|
||||
if( uniteCourante == POINT_VIRGULE ) {
|
||||
elementConsome();
|
||||
uniteCourante = yylex();
|
||||
|
||||
instructionAffect();
|
||||
|
||||
if( uniteCourante == FAIRE ) {
|
||||
elementConsome();
|
||||
uniteCourante = yylex();
|
||||
|
||||
instructionBloc();
|
||||
|
||||
} else {
|
||||
syntaxErrorMsg( "'faire' été attendu" );
|
||||
}
|
||||
|
||||
} else {
|
||||
syntaxErrorMsg( "';' été attendu" );
|
||||
}
|
||||
} else {
|
||||
syntaxErrorMsg( "'pour' été attendu" );
|
||||
}
|
||||
|
||||
closeSection( __func__ );
|
||||
}
|
||||
|
||||
void instructionVide() {
|
||||
openSection( __func__ );
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ void initialise_premiers(void){
|
||||
premiers[_instruction_][RETOUR] = 1;
|
||||
premiers[_instruction_][ECRIRE] = 1;
|
||||
premiers[_instruction_][POINT_VIRGULE] = 1;
|
||||
premiers[_instruction_][POUR] = 1;
|
||||
|
||||
premiers[_instructionAffect_][ID_VAR] = 1;
|
||||
|
||||
@@ -58,6 +59,7 @@ void initialise_premiers(void){
|
||||
premiers[_listeInstructions_][ECRIRE] = 1;
|
||||
premiers[_listeInstructions_][POINT_VIRGULE] = 1;
|
||||
premiers[_listeInstructions_][EPSILON] = 1;
|
||||
premiers[_listeInstructions_][POUR] = 1;
|
||||
|
||||
premiers[_instructionSi_][SI] = 1;
|
||||
|
||||
@@ -72,6 +74,8 @@ void initialise_premiers(void){
|
||||
|
||||
premiers[_instructionEcriture_][ECRIRE] = 1;
|
||||
|
||||
premiers[_instructionPour_][POUR] = 1;
|
||||
|
||||
premiers[_instructionVide_][POINT_VIRGULE] = 1;
|
||||
|
||||
premiers[_expression_][NON] = 1;
|
||||
|
||||
@@ -48,6 +48,7 @@ void initialise_suivants(void){
|
||||
suivants[_instruction_][RETOUR] = 1;
|
||||
suivants[_instruction_][ECRIRE] = 1;
|
||||
suivants[_instruction_][POINT_VIRGULE] = 1;
|
||||
suivants[_instruction_][POUR] = 1;
|
||||
|
||||
suivants[_instructionAffect_][ID_VAR] = 1;
|
||||
suivants[_instructionAffect_][ACCOLADE_FERMANTE] = 1;
|
||||
@@ -58,6 +59,7 @@ void initialise_suivants(void){
|
||||
suivants[_instructionAffect_][RETOUR] = 1;
|
||||
suivants[_instructionAffect_][ECRIRE] = 1;
|
||||
suivants[_instructionAffect_][POINT_VIRGULE] = 1;
|
||||
suivants[_instructionAffect_][POUR] = 1;
|
||||
|
||||
suivants[_instructionBloc_][FIN] = 1;
|
||||
suivants[_instructionBloc_][ID_VAR] = 1;
|
||||
@@ -70,6 +72,7 @@ void initialise_suivants(void){
|
||||
suivants[_instructionBloc_][ECRIRE] = 1;
|
||||
suivants[_instructionBloc_][POINT_VIRGULE] = 1;
|
||||
suivants[_instructionBloc_][SINON] = 1;
|
||||
suivants[_instructionBloc_][POUR] = 1;
|
||||
|
||||
suivants[_listeInstructions_][ACCOLADE_FERMANTE] = 1;
|
||||
|
||||
@@ -82,6 +85,7 @@ void initialise_suivants(void){
|
||||
suivants[_instructionSi_][RETOUR] = 1;
|
||||
suivants[_instructionSi_][ECRIRE] = 1;
|
||||
suivants[_instructionSi_][POINT_VIRGULE] = 1;
|
||||
suivants[_instructionSi_][POUR] = 1;
|
||||
|
||||
suivants[_optSinon_][ID_VAR] = 1;
|
||||
suivants[_optSinon_][ACCOLADE_OUVRANTE] = 1;
|
||||
@@ -92,6 +96,7 @@ void initialise_suivants(void){
|
||||
suivants[_optSinon_][RETOUR] = 1;
|
||||
suivants[_optSinon_][ECRIRE] = 1;
|
||||
suivants[_optSinon_][POINT_VIRGULE] = 1;
|
||||
suivants[_optSinon_][POUR] = 1;
|
||||
|
||||
suivants[_instructionTantque_][ID_VAR] = 1;
|
||||
suivants[_instructionTantque_][ACCOLADE_OUVRANTE] = 1;
|
||||
@@ -102,6 +107,7 @@ void initialise_suivants(void){
|
||||
suivants[_instructionTantque_][RETOUR] = 1;
|
||||
suivants[_instructionTantque_][ECRIRE] = 1;
|
||||
suivants[_instructionTantque_][POINT_VIRGULE] = 1;
|
||||
suivants[_instructionTantque_][POUR] = 1;
|
||||
|
||||
suivants[_instructionAppel_][ID_VAR] = 1;
|
||||
suivants[_instructionAppel_][ACCOLADE_OUVRANTE] = 1;
|
||||
@@ -112,6 +118,7 @@ void initialise_suivants(void){
|
||||
suivants[_instructionAppel_][RETOUR] = 1;
|
||||
suivants[_instructionAppel_][ECRIRE] = 1;
|
||||
suivants[_instructionAppel_][POINT_VIRGULE] = 1;
|
||||
suivants[_instructionAppel_][POUR] = 1;
|
||||
|
||||
suivants[_instructionRetour_][ID_VAR] = 1;
|
||||
suivants[_instructionRetour_][ACCOLADE_OUVRANTE] = 1;
|
||||
@@ -122,6 +129,7 @@ void initialise_suivants(void){
|
||||
suivants[_instructionRetour_][RETOUR] = 1;
|
||||
suivants[_instructionRetour_][ECRIRE] = 1;
|
||||
suivants[_instructionRetour_][POINT_VIRGULE] = 1;
|
||||
suivants[_instructionRetour_][POUR] = 1;
|
||||
|
||||
suivants[_instructionEcriture_][ID_VAR] = 1;
|
||||
suivants[_instructionEcriture_][ACCOLADE_OUVRANTE] = 1;
|
||||
@@ -132,6 +140,18 @@ void initialise_suivants(void){
|
||||
suivants[_instructionEcriture_][RETOUR] = 1;
|
||||
suivants[_instructionEcriture_][ECRIRE] = 1;
|
||||
suivants[_instructionEcriture_][POINT_VIRGULE] = 1;
|
||||
suivants[_instructionEcriture_][POUR] = 1;
|
||||
|
||||
suivants[_instructionPour_][ID_VAR] = 1;
|
||||
suivants[_instructionPour_][ACCOLADE_OUVRANTE] = 1;
|
||||
suivants[_instructionPour_][ACCOLADE_FERMANTE] = 1;
|
||||
suivants[_instructionPour_][SI] = 1;
|
||||
suivants[_instructionPour_][TANTQUE] = 1;
|
||||
suivants[_instructionPour_][ID_FCT] = 1;
|
||||
suivants[_instructionPour_][RETOUR] = 1;
|
||||
suivants[_instructionPour_][ECRIRE] = 1;
|
||||
suivants[_instructionPour_][POINT_VIRGULE] = 1;
|
||||
suivants[_instructionPour_][POUR] = 1;
|
||||
|
||||
suivants[_instructionVide_][ID_VAR] = 1;
|
||||
suivants[_instructionVide_][ACCOLADE_OUVRANTE] = 1;
|
||||
@@ -142,6 +162,7 @@ void initialise_suivants(void){
|
||||
suivants[_instructionVide_][RETOUR] = 1;
|
||||
suivants[_instructionVide_][ECRIRE] = 1;
|
||||
suivants[_instructionVide_][POINT_VIRGULE] = 1;
|
||||
suivants[_instructionVide_][POUR] = 1;
|
||||
|
||||
suivants[_expression_][POINT_VIRGULE] = 1;
|
||||
suivants[_expression_][ALORS] = 1;
|
||||
|
||||
Reference in New Issue
Block a user