From 0e82527b4b193cbfa617ec0c6e2fdd046e1b24bc Mon Sep 17 00:00:00 2001 From: Vu Tuan Minh Date: Wed, 30 Apr 2025 08:40:17 +0200 Subject: [PATCH] change fmt to .fmt --- src/main/java/TP2/Main.java | 4 ++-- src/main/java/TP2/asd/SymTable.java | 2 +- src/main/java/TP2/asd/toLLVM_Visitor.java | 26 +++++++++++++--------- tests/fragment1/if1 | Bin 0 -> 15848 bytes tests/fragment1/if2 | Bin 0 -> 15848 bytes tests/fragment1/while1 | Bin 0 -> 15848 bytes 6 files changed, 19 insertions(+), 13 deletions(-) create mode 100755 tests/fragment1/if1 create mode 100755 tests/fragment1/if2 create mode 100755 tests/fragment1/while1 diff --git a/src/main/java/TP2/Main.java b/src/main/java/TP2/Main.java index f8263fe..fe77088 100644 --- a/src/main/java/TP2/Main.java +++ b/src/main/java/TP2/Main.java @@ -56,12 +56,12 @@ public class Main { //System.err.println("todo " + ast); //System.out.println("\n\n PRETTYPRINTER VSL : \n--------------\n"); - System.out.println(ast.prettyprinter()); + //System.out.println(ast.prettyprinter()); //System.out.println("\n\n PRETTYPRINTER VSL : \n--------------\n"); // Verify the program semantic // Generate the intermediate representation - System.out.println("\n\n"); + //System.out.println("\n\n"); ProgramLLVMImp astLLVM = ast.toLLVM(); //System.out.println("\n\n PRETTYPRINTER LLVM : \n--------------\n"); diff --git a/src/main/java/TP2/asd/SymTable.java b/src/main/java/TP2/asd/SymTable.java index 4afbb34..5f980b2 100644 --- a/src/main/java/TP2/asd/SymTable.java +++ b/src/main/java/TP2/asd/SymTable.java @@ -132,7 +132,7 @@ public class SymTable { } public String getGlobalDeclName(){; - return "fmt"+id[2]; + return ".fmt"+id[2]; } public void addGlobalDecl(DeclarGlobalLLVMImp decl){ diff --git a/src/main/java/TP2/asd/toLLVM_Visitor.java b/src/main/java/TP2/asd/toLLVM_Visitor.java index bf7ae92..2db14ab 100644 --- a/src/main/java/TP2/asd/toLLVM_Visitor.java +++ b/src/main/java/TP2/asd/toLLVM_Visitor.java @@ -78,6 +78,8 @@ public class toLLVM_Visitor implements ProgramVisitor, if(!(instrLLVM.getLast() instanceof ReturnLLVMImp || instrLLVM.getLast() instanceof BrLLVMImp)){ instrLLVM.add(new ReturnLLVMImp(type, new ValLLVMImp(type,0))); } + }else { + //TODO } DefineLLVMImp define = new DefineLLVMImp(fun.nom(), type, paramsLLVM, instrLLVM); return define; @@ -225,7 +227,6 @@ public class toLLVM_Visitor implements ProgramVisitor, h.addGlobalDecl(globalDecl); l.add(new ScanLLVMImp(globalDecl,params)); - return l; } @@ -257,9 +258,9 @@ public class toLLVM_Visitor implements ProgramVisitor, @Override public ArrayList visitIfThen(IfThenImp instr, SymTable h) { ArrayList l = new ArrayList<>(); - String labelIf= "if"+h.getNewIdLabel()+":"; - String labelThen= "then"+h.getNewIdLabel()+":"; - String labelFin= "fin"+h.getNewIdLabel(); + String labelIf= "if"+h.getNewIdLabel(); + String labelThen= "then"+h.getNewIdLabel(); + String labelFin= "fi"+h.getNewIdLabel(); l.add(new LabelLLVMImp(labelIf)); InstrAndVal temp = instr.e().accept(this,h); @@ -406,12 +407,17 @@ public class toLLVM_Visitor implements ProgramVisitor, //} //Pour c=func(x,y) - Result res = h.addNewTempVar(); - h = res.symTable; - VarLLVMImp var = new VarLLVMImp(fLLVM.define.type(), res.var,false); - - l.add(new AssignLLVMImp(var, new CallLLVMImp(fLLVM.define,paramsLLVM,""))); - return new InstrAndVal(l, var); + if (fLLVM.define.type() instanceof VoidLLVMImp) { + l.add(new CallVoidLLVMImp(fLLVM.define, paramsLLVM, "")); + return new InstrAndVal(l, null); + } else { + Result res = h.addNewTempVar(); + h = res.symTable; + VarLLVMImp var = new VarLLVMImp(fLLVM.define.type(), res.var, false); + + l.add(new AssignLLVMImp(var, new CallLLVMImp(fLLVM.define, paramsLLVM, ""))); + return new InstrAndVal(l, var); + } } @Override diff --git a/tests/fragment1/if1 b/tests/fragment1/if1 new file mode 100755 index 0000000000000000000000000000000000000000..29662664edc79ffa3a9be8ac43c38d23264c85ee GIT binary patch literal 15848 zcmeHOTWlOx89uv7nhm+^#x$y%lw?#=NSb)!yFyEnb$rRVaxP6A5d>v4>mA!G?Zw@l zC3aOxz(q<_1*Hg4A%T>>6ogQzP#>a-2S=t+f&ew}k{6JLs1zzFuF56cGW`F{|E& zPfG(p@QwBiX)%UZga$@+92;ed!@=d4k+`%9LdQkcWki<|9q={jClK-EnDA%6#50Zt z**F=&QK`7@jOgMxApSsZgVU+Ez5EAh?}X@98$mTHj(bB|0ny%*qzmFH_Im*?^GRuM zrR$&&e?bYa+E*;(db{@(^KHdKxjx-Cy}!4ux7(~$%+8=`?iaVgW9rDU(<*sR%`pc( z=kKQvhn4L&dM-Zt+Rx5b_PlXo-7nvK@dw_ozJ3jLu!em&u|K-RWzKUO>=T~@Ql|4Lq)XuwAccM`9-0JAj{$i!UpT-MRObF-eAKrV)^XH%yfOFsi{GFyC+Q9+Nxpyhz8ITBJ{98^ zq{38I>>@{b?odeZHRNl8bUngHulrjOKJ0m@xE0}f{2(nvcpfi0=?Lfu=m_Wt=m_Wt z=m_Wt=m<26!29X#f463TpR!(9b9J9m)>r1dr2m#R`{UGn;O_VQglPYfpVBeCBTKpO zQEvPa>SBGzABHd7{G4^+H`eTL7f*~1cFc9$ur40BNk0CT&yf3{#?ADO=K~4x-z3Jm zxaMmNpSa^~p{5UVo|<0gFQj*zW5;S(K9jg{H}iSkG}sgb{JS2yb;?;*>3t=AwD2BWrjAjK9OF3 zHg!%N+WPpTT|0xidTu_K(QG^{$i`rGNBhIOsp(MvtjMc|q)dlQQ}t)&I`{>&I7W80%Dz^!Gnz>^hyR zm%X~t(Peg-?QOmFpxF6bXSdnjy<6y&Y6^Ld$7=PSANS(;Cdl%v1jG;rUPs)_e>?F> zwMk9M_!Dp#NTAJ#T1L>RHNgyZC;9=W&-% z)LR+P;J-teX8m93yj~6JX;H5ms9_14)$^mke~XG=$2SAnX0_T_(sS+>eG=*cg>et- zyOe3R9(+9o#DG%-djp=n4cQ1u*^d*SQLT-5!fF!Vl1wYyAHa8uf4rW)pniBQ;R)h5 zCtDT9B`i-dPc17WWaMk6io|E=`nG1_8RBEax6pOW$~X!BH$|qW#UJAVsxOFtyWHRK zKc_Df&;5z}f0cLx;s}11c-%uHw3;WrB}sR!*tk`v#;RV2S)rBfPOe~k&V(YO=GDi? z%`vsK3f}fg_86~&uaRfIVoww+Ij3mny-KxaJN0QbRw+#tUC+&%?ae)S1%APHs#Ryk zcFSIMMvYgUl56MdrP2&ZA|;zVy=AV2@eZ?CB(I^9eMblF!D9n9t-c@l^s&C9!~I0l zHU@jp600?EQrSmFjvwwDv5yZ8of;gqNBa(s43Z+gIUtKY0QXw=@8%uPQNcM-EnEmU z0Z?K2jsQDftJsrHInTQVhL4k1zEHO7H8-#5wCP~yYBkZy_5|8tfHUH)2Tk`AEZ@Y? z=r(U%2%<$Berhu%&&d&b)et9vY? z@9=ON4~D>f(y2`#wN|KrEabE(> zzdunue*b_590lY0PZ9qYnoFSnm@fg*KITjD{yU`Sxf1l4PXRAUyWB^PGxV4T6^P?g zh92`XApb5#6W0+J#cO8f}vg1_x+e2zwbai7r;M0et#(X#@xdYProI-15n6!f;V6i>f&K+$Hql4E_Dl0WS~1Eg?vFC?*W{C?5A>LCrv5|yJEY~Y2R-J2 z*e8nppgjILp*J$GL&78P5OwjLXFkuGzC}QkIU9(c5B^~46 rAs*xC58}elJ?MK>f1V#$DBVCqVKL~dWCP&oXfyqjJ)u|T9{PU+z=ex~ literal 0 HcmV?d00001 diff --git a/tests/fragment1/if2 b/tests/fragment1/if2 new file mode 100755 index 0000000000000000000000000000000000000000..03a3d5e7a6e0409ee4335a71d585247625fc271e GIT binary patch literal 15848 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 literal 0 HcmV?d00001 diff --git a/tests/fragment1/while1 b/tests/fragment1/while1 new file mode 100755 index 0000000000000000000000000000000000000000..3b5dc3f4454be3cadd6ebf863c1ac80bb857af29 GIT binary patch literal 15848 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 literal 0 HcmV?d00001