diff --git a/src/main/java/TP2/asd/toLLVM_Visitor.java b/src/main/java/TP2/asd/toLLVM_Visitor.java index 5eff4ea..d2d2912 100644 --- a/src/main/java/TP2/asd/toLLVM_Visitor.java +++ b/src/main/java/TP2/asd/toLLVM_Visitor.java @@ -112,12 +112,23 @@ public class toLLVM_Visitor implements ProgramVisitor, Integer size=instr.s().get(i).size(); if(size==null){ r= h.addVar(nom,t2); + h = r.symTable; + list.add(new AssignLLVMImp(new VarLLVMImp(t2, r.var,false),new allocaLLVMImp(t2))); }else { TypeLLVM arrayType = new ArrayLLVMImp(t2, size); + + //Alloca + Result r_size= h.addNewTempVar(); + VarLLVMImp tmpVar = new VarLLVMImp(new IntLLVMImp(), r_size.var, false); + list.add(new AssignLLVMImp(tmpVar, new allocaLLVMImp(t2))); + + //Alloca table r = h.addVar(nom, arrayType); + h = r.symTable; + list.add(new AssignLLVMImp(new VarLLVMImp(t2, r.var,false),new allocaLLVMImp(new PointerLLVMImp(t2)))); + + //Store } - h = r.symTable; - list.add(new AssignLLVMImp(new VarLLVMImp(t2, r.var,false),new allocaLLVMImp(t2))); } return new InstrAndSymTable(list,h); } @@ -125,7 +136,8 @@ public class toLLVM_Visitor implements ProgramVisitor, @Override public InstrAndSymTable visitVarDecl(VarDeclImp instr, SymTable h) { ArrayList list = new ArrayList<>(); - //TODO + + return new InstrAndSymTable(list,h); } diff --git a/tests/aLaMain.vsl b/tests/aLaMain.vsl index 0666e8d..aa49412 100644 --- a/tests/aLaMain.vsl +++ b/tests/aLaMain.vsl @@ -1,4 +1,5 @@ -FUNC INT main(x,y) { +FUNC INT main() { INT a,b[10],c,d[11] a:=1 + c:=2 } \ No newline at end of file