toLLVM prettyprinter pour assign
This commit is contained in:
@@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import TP2.asd.Program.*;
|
||||
import TP2.asd.toLLVM_Visitor.InstrOrVal;
|
||||
import TP2.llvm.Interface.*;
|
||||
import TP2.llvm.ProgramLLVM.*;
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public class PrettyprinterVisitor implements ProgramVisitor<String,String>,
|
||||
|
||||
@Override
|
||||
public String visitAssign(AssignImp instr, String indent) {
|
||||
return instr.t()+ " :=" + instr.e().accept(this,"");
|
||||
return indent + instr.t()+ " := " + instr.e().accept(this,"");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -85,11 +85,12 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImpl>
|
||||
public ArrayList<InstructionLLVM> visitAssign(AssignImp instr, SymTable h) {
|
||||
InstrOrVal res = instr.e().accept(this,h);
|
||||
ValLLVM var = res.getVal();
|
||||
InstructionLLVM r = new AssignLVMImp(new VarLLVMImpl(var.getType(),instr.t()),var);
|
||||
ArrayList<InstructionLLVM> result = new ArrayList<>();
|
||||
if(!res.isVal()){
|
||||
result.addAll(res.instr);
|
||||
}
|
||||
//InstructionLLVM r = new AssignLVMImp(new VarLLVMImpl(var.getType(),instr.t()),var);
|
||||
InstructionLLVM r = new StoreLLVMImp(var.getType(),var,var.getType(),new VarLLVMImpl(var.getType(),instr.t()));
|
||||
result.add(r);
|
||||
return result;
|
||||
}
|
||||
@@ -111,6 +112,12 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImpl>
|
||||
return new InstrOrVal(null, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public InstrOrVal visitVar(VarImp e, SymTable h) {
|
||||
ValLLVM val = new VarLLVMImpl(new IntLLVMImpl(), e.name());
|
||||
return new InstrOrVal(null, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public InstrOrVal visitBinOp(BinopExpressionImp e, SymTable h) {
|
||||
ArrayList<AssignLVMImp> list = new ArrayList<>();
|
||||
@@ -156,12 +163,4 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImpl>
|
||||
public TypeLLVM visitVoid(Type_voidImp t, SymTable h) {
|
||||
return new VoidLLVMImpl();
|
||||
}
|
||||
|
||||
@Override
|
||||
public InstrOrVal visitVar(VarImp e, SymTable h) {
|
||||
return new InstrOrVal(null, null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user