toLLVM prettyprinter pour assign

This commit is contained in:
trochas
2025-04-07 16:06:21 +02:00
parent deafaa26fc
commit b3ed282f9a
8 changed files with 39 additions and 20 deletions

View File

@@ -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);
}
}