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