From 4348256154438d2810103374fd82ebe249895002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9l=C3=A8ne=20TRAN?= <helene.tran@ensiie.fr> Date: Tue, 26 Dec 2017 22:32:30 +0100 Subject: [PATCH] Corrections labgen.c par rapport au .y --- Labgen/a.out | Bin 13488 -> 13464 bytes Labgen/labgen | Bin 33632 -> 33608 bytes Labgen/labgen.c | 27 ++++++++------- Labgen/labgen.h | 8 ++--- Labgen/labgen.o | Bin 4480 -> 5024 bytes Labgen/labgen.y | 89 ++++++++++++++++++++++++++++-------------------- Labgen/y.tab.c | 37 ++++++++++++++------ 7 files changed, 96 insertions(+), 65 deletions(-) diff --git a/Labgen/a.out b/Labgen/a.out index 6dc060296f6a65e13977c12e48cc264760244e59..9afc3faa27b9fecef4426a5efd8435c6cd41ce9b 100755 GIT binary patch delta 2007 zcmZuyeQXnD7=Pb($94m@>*$z#jT<n!MWn+_=iC<CkkiAAWQ$Z;2+BYb7D>R5MgCw^ zY%pAohQS+jni$a#kz_H`VzNZDuA8GkNc@P9q5M&Bgqs7c2BAXd`Frn<vPCZGJ>S3I z^FH_7wXdV6qq~ZZ9;!Yro-85Ob@I@~xTjIFjYcV8DUIv|{l$B2?Ttl4k6wPcymkDn zo4n%d-6B`UdR!m4i>0CfQIm<Iv$;r~j|FGUrD4TLDk)w*ehfEVNvS<*)H}jGs;(Gn zbfHUEMk9k1{zS^HYDr`Bzow~b?xZrtvnDqEzleUX>O>EXsat+j6Ia{-k>V7&hR-g& zUy<+durI{9;ZuY}lrd`aH7H}@BM~J9^AhMAlvMG-wWetz8f|f$+6A;TZea@BACgH@ z*t1LqB7wHk(X3NMzOCA@aX6%ESJlXMN!7a2s@9oNBV8HNIV)a;!5Awhn@n?Jo35ny z4eokYS8hVA)<bDsm;>bcp{~dE&`n(^w2f-yO`BAP^%YdqsX*%I{Kl26X<FKud$cv6 zO@Y=>wa_T2M@eU~P5mwt#iebpm2sNlD4#uMrwdyh$4NM>Q{b>00n4Ak5lbo=RSy}6 zWmN3~cbCI`f4FwtC}vw$x^M6e|AQj)OJjE*RFe{y2X^I7^Eq<5b0?8;60A)I_+;Xx zq>{CiCf>%h<za8loFDiq2eJ+z5hY7?VdY$zG$`3{fBb7c`UO@XgMh~hWWw({WJ#fz zl^52{&qs!)WFuW!(kXyv!W&U|{%{4`QP>iGwL&IMCc4<;jSq6f<~ycoZ`>!)^hGU5 zz?eq)i~{g*xyzD6>Xu<u^NtM4n}{w{@w^^Y&$Da{7ZuiEC;kD9All(*cNW{MD?e#@ zM^2+ItP5#bCfHI<xCW(LoxX1ad1x&z;AT9HgQ%L4nc^z5U1`2vN?JP=Pv<7~DOlqL z#W>JzXlMt|TS*Vp!^2O|%a;JoF!wr*=39$#D&B+~dlNTvkQNT|#8i;I4#+kKWD3Tx z)zMUpa#ZR<c8*M<El~b|5-})x-Op*lI2keSX25fT^ZWn}a9GNu@#LiQ9vELj8{l7o z_z+JL@!Af!a^{`s(FtzyiN#Oz<V!GhA-Y&5;QWqrB1DY+7LgF%i+)r@j9g>~BD&DN zz$&<tbFa4x+MIlkbPwq%EB`S&zcS~pg4=nEyMr$TpATwgFce(Z9Ibp&l1WI7KEkE< zxi#9YHQM>+YW{gCP!p4GBg_V7U(4TJ`MNBU-RxLVZ7fx^p0?KhZJOVp^)bi;kU!rt zP5v3Z1(}E8l!0&s<O#@T$cq^KcE}A_)&r2+A$uVckmn%ZXPQ(;TUbK!)1B;3$wz-@ z^E`{`Z>-+qYyTCfhk;IlMbbO2)w5@~qO<Y~2w4bMFMgrhrdb1&T-^OI<q14~4!^DF z;%&%W+|`w<zYcejee78v%mP9`OF&xz?FPH-Sz5LZ+K1@<>@@U|SVPIkOeU2Fs5jPH zo^(?$TeYOrEfE>Aj5e}%SS6${*1qI6rG2bz*+DqRm-#FBpBKOQ#_($;fJ;abxmpmg z>>5^I>8FQTN99KV6_@+zB&)~$GuE;E_`K3WJIgu@@;3p-LpW`<&rgrCHs71`&d;=S ztd@~;3^|<Py%?=JSU~?`hid$y*J;Dc&eYV2vSZ0iTvaFD{~ulhs}D=WufCYJD(s>o SOssu|O02cEj`lOH*7qM%FAAmr delta 2039 zcmZ8i4Qvx-82-Ms2P<RSwQQ{X49eJ68jGcYI3|*`!s#u7fj~72F^rHXi(puAK_cUf z4eI468~H?s5uM2rFfIzz#A%dnOsFJ;fc#`eg+UMwHbaL96$|I{-IcQWCGGqBywCf+ z_x9S}c%ZRu7ESH)?Q?Xxh<Q49{gQC{Ma%GuAye_Q&*`rvUxuD8`1bjk*CKu8;|%G* zhZAn<o8s+xAK8jYQHaRN-nK$6l4s)KF%zjG_$PTtQqp;a>z(+LHDMB5T11!E{w()i zw#l)nq9*l6d#Kzl_YT-(HL0(DU>LG$OG-l=H`oBs7569*Jtb=>GBlz{f+AP1w4gv7 z0zw(V^M8nGA0s3x4N<Fs1=5hRJ1Xfge?vbDB)zzGsbLt1#+GHB>Us2c)g%!b!H^W* ztn~0Mp>4=&ZF2O-S*u>^i^%2bA98d^l+~6LI;udvyuGJ+e8P=c>5s9de0Q}A&e|g_ zPiT?bn&7YuACfPZ@e8N27i3@M&zL_SsBTWBU&<JUsT~K2$>9OVfUGv_fNFqpo??sV zeKyuHvwkC-wMU9$M}gNOS2SU5*6}qQvL@+#@T*XlOJ+(bE%W(lkm`Bvp32>tP-wO` zkZa9RR=U0C^#CH5Ci137L?)LW{MW=B8XdXdsCKW*U8f5<ZPrziLM!`ZT+QTn;Zmhc zv?W8D1#~c25|z?a6Bbplo8y)#!!tZ&p@Gh~l_d7_VV<~W7}f?<0I8LqLIOJP=WX{O z#%0=+N947AvRZPq$J0PGVL#7nmo>X-<Gw(ccYPJfnxI<YSX&0$rAcR1`|h8BQ#4^C zB3Ketcm>L%CvH9Pq?9H&gR7HL##9z!IIdDYob<z$&F*7nlr5{r68*WkxY0vY%HZ0! zN<3tNlu^197x-<Ji~sNlAILc~l2$&*4v_ELVLM0@0={$^(->iv!<1Di#kWmLfovd0 z)`gOZG_U?PG|Vn_*jF4Pd~n~G&s|D!-OY6c$k_;5+qj7%LooHahsdTZa@z>xMU#6Z z@JXa=f*Uu8ErU`3C8|@@ej``AjMv`7YyX+%T?r>A;DIS>(xTppU!tWwa~~JwuYklM zp1qfwc{y|E=%~U?KA%K4Pu>Vq6F!^nA>dBrxIeZScXLJr`g4J(f`}$GPcZ>Ea{l!e zU_%x_@#eIeTVdwcS^1?o_fv423CH`2r!OWX{9^cpuxf-O;gw5bRj-L25|LxGxm;1F z-l<d1E%EX9Nxm%f-nZ$k>}26J_CwL!v0JM)c^qVG{AN)-UB38l!}uOoyA8Pm^2Qy* zxB@xmu3^|QATLP$kl#TrfgHqy*F$C?cR()3(se=l@VL%G?qhqz8rr~4ivju;qfRe< zz<kc>^d75odc%LAIzx35E)w6#TU0nEZ|C^2`Gib`s|%l(!5T!BT-@fTJb}kg;Io;X zc1{t7psi!W(8eQoFLSzP*35&p6g_Q2EQik9lB>QF@h=eX9#uUaf6jHZfDKTQiPJ*V z9$!8!X`^-)tSGgKM1(A(ezpddi*&@-RNSSsgVk5I!g;+iFoXYz@xwQVpT|+$MT*GP z{E%q}S#4E-GS*o2DT+F(1GI(J;(Hcrtll>%Qeb77EhE1HWt@c5`n&<!#_GMBgJ-fi zX4}ZQ1qLUXOy0w5g&)k$Je|OD=Cb&8Z)-li%(l!4IPBT>?Cjv28i$y*L^cfT(f@QX hSmWrxlJV0KZwe}T^mjHq_gQpVJFkYGVomeB{{c2>1bzSj diff --git a/Labgen/labgen b/Labgen/labgen index 8614f7558318db3bf52b230f391fc8fb5813f98e..cd0167934fe91538b41a5337518646aea13c32bf 100755 GIT binary patch delta 12716 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 F{{tCimyQ4c delta 11521 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 diff --git a/Labgen/labgen.c b/Labgen/labgen.c index 532b52c..1f520ba 100644 --- a/Labgen/labgen.c +++ b/Labgen/labgen.c @@ -1,6 +1,6 @@ #include "labgen.h" point size; /*Attention c'est la taille réelle de la matrice*/ -char *** matrice = NULL ; +/* char *** matrice = NULL ; */ int in,out; variables listevars; @@ -18,10 +18,10 @@ point new_point(int x, int y) /* Crée une matrice de taille (s1, s2) * /!\ Attention : toujours créer la matrice avant d'utiliser * les autres fonctions */ -void create_matrice(int s1, int s2) +char*** create_matrice(int s1, int s2) { int i,j; - matrice = malloc((s1+1)*sizeof(char **)); + char*** matrice = malloc((s1+1)*sizeof(char **)); for (i= 0; i<s1+1; i++){ matrice[i] = malloc((s2+1) * sizeof(char *)); @@ -34,11 +34,12 @@ void create_matrice(int s1, int s2) /*Attention c'est la taille réelle de la matrice*/ in = 0; out = 0; + return matrice; } /* Renvoie la valeur de la matrice de coordonnées p */ -char* lecture(point p) +char* lecture(point p, char*** matrice) { if (matrice == NULL){ printf("Matrice non initialisée.\n"); @@ -54,7 +55,7 @@ char* lecture(point p) /* void stock_val */ /* Change la valeur de la matrice de coordonnées p par la valeur msg */ -void change_val_matrice(point p, char * msg) +void change_val_matrice(point p, char * msg, char*** matrice) { if (matrice == NULL){ printf("Matrice non initialisée.\n"); @@ -84,7 +85,7 @@ void change_val_matrice(point p, char * msg) printf("\n"); }*/ -void affichmat() { +void affichmat(char*** matrice) { int i,j; /*ligne();*/ @@ -151,18 +152,18 @@ void create_modif_var(char* nom, int val) { } -int main () { - create_matrice(5,4); +/*int main () { + char*** matrice = create_matrice(5,4); point p1 = new_point(5,4); printf("Point p1 (%d,%d)\n",p1.x,p1.y); printf("\nAppel de la fonction change_val_matrice(p1,ABC)\n"); - change_val_matrice(p1,"ABC"); - printf("Point p1 :%s\n", lecture(p1)); + change_val_matrice(p1,"ABC",matrice); + printf("Point p1 :%s\n", lecture(p1,matrice)); printf("\nAppel de la fonction change_val_matrice(p1,DEF)\n"); - change_val_matrice(p1, "DEF"); - printf("Point p1 :%s\n", lecture(p1)); + change_val_matrice(p1, "DEF", matrice); + printf("Point p1 :%s\n", lecture(p1,matrice)); printf("\nTaille de la matrice : (%d,%d)\n",size.x-1,size.y-1); printf("Matrice correspondante :\n"); @@ -180,4 +181,4 @@ int main () { printf("Deuxième valeur : %d\n",listevars.val[1]); return 0; -} +}*/ diff --git a/Labgen/labgen.h b/Labgen/labgen.h index 6e34048..5aeb11e 100644 --- a/Labgen/labgen.h +++ b/Labgen/labgen.h @@ -16,10 +16,10 @@ int last; point new_point(int ,int); -void create_matrice(int,int); -char* lecture(point); -void change_val_matrice(point,char*); -void affichmat(); +char*** create_matrice(int,int); +char* lecture(point,char***); +void change_val_matrice(point,char*, char***); +void affichmat(char***); void init_listevars(); int find_var(char*); diff --git a/Labgen/labgen.o b/Labgen/labgen.o index 43cc4455572ae0b1d8aab00a132a8d51ff3560b4..faa8e7a8f832a1c5243512a18f60e5b1820c09fc 100644 GIT binary patch literal 5024 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 literal 4480 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 diff --git a/Labgen/labgen.y b/Labgen/labgen.y index 0dc3173..33ab99d 100644 --- a/Labgen/labgen.y +++ b/Labgen/labgen.y @@ -18,7 +18,7 @@ extern int yylineno; char file[255]; %} -%union yylval +%union yylval { int cnum ; char* ident; @@ -28,26 +28,26 @@ char* dir; -%token<ident> IDENT +%token<ident> IDENT %token<cnum> CNUM -%token SIZE +%token SIZE %token<cnum> IN %token<cnum> OUT WALL PTD SHOW UNWALL END R F PTA FOR TOGGLE WH MD %token<op> OP %token<dir> DIR - + %left MULT DIV MOD -%left PLUS MOINS +%left PLUS MOINS %nonassoc NEG %% file: -listinstr +listinstr ; listinstr: -instruction +instruction |listinstr instruction ; instruction: @@ -83,13 +83,13 @@ affichmat(matrice); |WALL PTD pt wallptd END |WALL FOR wallfor END |UNWALL PTA list END -|UNWALL R F pt pt END -|UNWALL PTD unwallptd END -|UNWALL FOR unwallfor END +|UNWALL R F pt pt END +|UNWALL PTD unwallptd END +|UNWALL FOR unwallfor END |TOGGLE PTA list END -|TOGGLE R F pt pt END -|TOGGLE PTD toggleptd END -|TOGGLE FOR togglefor END +|TOGGLE R F pt pt END +|TOGGLE PTD toggleptd END +|TOGGLE FOR togglefor END |WH pt MOINS MOINS '>'pt list1 END |WH pt MOINS '>'pt list1 END |MD pt destlist END; @@ -104,16 +104,16 @@ xcst |expr DIV expr; */ -xcst: -IDENT -|CNUM -|PLUS CNUM +xcst: +IDENT +|CNUM +|PLUS CNUM |MOINS CNUM -| xcst PLUS xcst -|xcst MOINS xcst -|xcst MULT xcst -| xcst DIV xcst -| xcst MOD xcst +| xcst PLUS xcst +|xcst MOINS xcst +|xcst MULT xcst +| xcst DIV xcst +| xcst MOD xcst | '(' xcst ')' ; @@ -121,7 +121,7 @@ IDENT wallfor: -IDENT wallfor +IDENT wallfor |IN listRange pt; unwallfor: @@ -152,7 +152,7 @@ pt wallptd unwallptd: pt |pt ':' r | -pt unwallptd +pt unwallptd |pt ':' r unwallptd; @@ -160,7 +160,7 @@ r: "*" | xcst; -pt: '('xcst ',' xcst')' ; +pt: '('xcst ',' xcst')' ; range: @@ -180,7 +180,7 @@ list1: ; -destlist: +destlist: |DIR pt destlist; listRange: @@ -193,26 +193,41 @@ range %% void yyerror(const char* mess){ -fprintf(stderr," %s:%i:syntaxe error (near %s) \n", file,yylineno,yytext); -exit(1);} + fprintf(stderr," %s:%i:syntaxe error (near %s) \n", file,yylineno,yytext); + exit(1); +} int main(int argc, char *argv[]){ - - - if (argc==2) { + if (argc == 1){ + printf("A faire : lecture sur le flux standard d'entrée + exécutable labres\n"); + } + + else if (argc==2) { FILE *fp = fopen(argv[1],"r"); if (fp!=NULL) { - strcpy(file,argv[1]); + strcpy(file,argv[1]); printf("Reading input from file succeded: %s\n",argv[1]); - + yyin = fp; listevars.last=0; yyparse(); - } else { - printf("File doesn't exist\n"); - return 1; + } + else { + fprintf(stderr,"File doesn't exist.\n"); + exit(1); } } - + + + else if (argc == 3){ + printf("A faire : lecture dans le fichier argc[1] + exécutable argc[2]\n"); + } + + else{ + fprintf(stderr,"usage: %s OR %s if OR %s if exe\n", + argv[0],argv[0],argv[0]); + exit(1); + } + return 0; } diff --git a/Labgen/y.tab.c b/Labgen/y.tab.c index 5aa9322..68d77cd 100644 --- a/Labgen/y.tab.c +++ b/Labgen/y.tab.c @@ -1650,26 +1650,41 @@ yyreturn: #line 194 "labgen.y" /* yacc.c:1906 */ void yyerror(const char* mess){ -fprintf(stderr," %s:%i:syntaxe error (near %s) \n", file,yylineno,yytext); -exit(1);} + fprintf(stderr," %s:%i:syntaxe error (near %s) \n", file,yylineno,yytext); + exit(1); +} int main(int argc, char *argv[]){ - - - if (argc==2) { + if (argc == 1){ + printf("A faire : lecture sur le flux standard d'entrée + exécutable labres\n"); + } + + else if (argc==2) { FILE *fp = fopen(argv[1],"r"); if (fp!=NULL) { - strcpy(file,argv[1]); + strcpy(file,argv[1]); printf("Reading input from file succeded: %s\n",argv[1]); - + yyin = fp; listevars.last=0; yyparse(); - } else { - printf("File doesn't exist\n"); - return 1; + } + else { + fprintf(stderr,"File doesn't exist.\n"); + exit(1); } } - + + + else if (argc == 3){ + printf("A faire : lecture dans le fichier argc[1] + exécutable argc[2]\n"); + } + + else{ + fprintf(stderr,"usage: %s OR %s if OR %s if exe\n", + argv[0],argv[0],argv[0]); + exit(1); + } + return 0; } -- GitLab