From 9634c1ffe499a710cd585cf00b4e2fc4ddec2168 Mon Sep 17 00:00:00 2001 From: Nada chaa <140740775+Nada-webdev@users.noreply.github.com> Date: Mon, 16 Dec 2024 20:07:39 +0100 Subject: [PATCH 1/3] affectation a une var tq T[index] n'a pas de valeur err semantique --- langage.txt | 8 ++------ syntaxique.y | 10 +++++++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/langage.txt b/langage.txt index aab4945..2c054e4 100644 --- a/langage.txt +++ b/langage.txt @@ -10,14 +10,10 @@ Float Z; Float T[10]; final Float H[10]; InDebut +T[5]<-- 0; Z<-- 0; -T[5] <-- 4; -T[2] <-- 10.5; -H[9] <-- T[5]; -T[0] <-- Z; -T[45] <--0; -//Z <-- T[2]/Z + 0/7; X <-- T[5]; +X <-- T[7]; //Write("gfgf %d",T[10]); // add function allouer to const InFin \ No newline at end of file diff --git a/syntaxique.y b/syntaxique.y index 46293c7..16b0846 100644 --- a/syntaxique.y +++ b/syntaxique.y @@ -317,6 +317,7 @@ if(NonDeclaration($1) == -1) { { strcpy(sauvIdf2,$1); val.is_i_val=-1; + if(NonDeclaration($1)== -1) { updateConst($1,""); printf("Erreur Semantique: Entite %s non declarer ligne:%d colonne:%d \n",$1,nb_ligne,col); @@ -324,8 +325,15 @@ if(NonDeclaration($1)== -1) { else if(getTailleTable($1) < $3){ printf("Erreur Semantique : Depassement de la taille d un tableau ligne %d colonne %d .\n",nb_ligne,col); } + else{ - getvalueArray($1,$3,&val); + getvalueArray($1,$3,&val); + } + + //verifer si T[index] a une valeur pour l'affecter a une autre variable x<-- T[2] a une val ou pas + if (searchValueArray($1,$3)==0){ + printf("Erreur Semantique: La table %s est declarer mais n'a pas une valeur pour l 'index %d . ligne :%d colonne: %d\n",$1,$3,nb_ligne,col); + } } From 3127e65f95bd9a3e9cca6bf366c0d1d5e60ff3e9 Mon Sep 17 00:00:00 2001 From: Nada chaa <140740775+Nada-webdev@users.noreply.github.com> Date: Tue, 17 Dec 2024 17:54:55 +0100 Subject: [PATCH 2/3] searchValueArray --- TS.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/TS.h b/TS.h index 0022d24..54b5572 100644 --- a/TS.h +++ b/TS.h @@ -6,7 +6,7 @@ typedef struct { int i_val; float f_val; - int is_i_val; + int is_i_val; //1 entier 0 real -1 idf(string) } ValueType; typedef struct @@ -660,3 +660,21 @@ while (current != NULL) { current = current->suiv; } } + +int searchValueArray(char nomEntite[],int index){ + listArray current = tArray; +while (current != NULL) { + if (strcmp(current->info.nomEntite, nomEntite) == 0 && current->info.index == index) { + + if(current->info.hasvalue==1){ + return 1;// a une val + } + else { + return 0; //pas de val + } + } + current = current->suiv; +} + + return -1; //autre err +} From 5e315882b636d2807410b1fa194342b9079516b4 Mon Sep 17 00:00:00 2001 From: SamiSelx Date: Tue, 17 Dec 2024 23:10:36 +0100 Subject: [PATCH 3/3] fix --- syntaxique.y | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntaxique.y b/syntaxique.y index 7f76da9..f4da26c 100644 --- a/syntaxique.y +++ b/syntaxique.y @@ -385,7 +385,7 @@ strcpy(T[index_Op].s_val,$1); if (searchValueArray($1,$3)==0){ printf("Erreur Semantique: La table %s est declarer mais n'a pas une valeur pour l 'index %d . ligne :%d colonne: %d\n",$1,$3,nb_ligne,col); } - +} } |Constant | '(' Operation ')' ;