symTable Var

This commit is contained in:
trochas
2025-04-10 10:27:33 +02:00
parent 77aef737c3
commit f59d92bc12
2 changed files with 16 additions and 3 deletions

View File

@@ -51,6 +51,17 @@ public class SymTable {
return new Result(newSymTab,newVar);
}
public Result addVar(String nomVar){
String newVar = nomVar+id;
SymTable newSymTab = this.addVar(nomVar,new Type_intImp()); //TODO
return new Result(newSymTab,newVar);
}
public String getVar(String nomVar){
System.out.println("getVar(" + nomVar +") -------------------------------------------");
return nomVar + this.stackMap.getLast().get(nomVar).id;
}
public PStack<PMap<String,ValueTable>> next_layer(){
return stackMap.plus(HashTreePMap.empty());
}
@@ -65,7 +76,6 @@ public class SymTable {
public PMap<String,ValueTable> peppapeek(){
if(stackMap.isEmpty()){
System.out.println("TEST...............................");
return this.next_layer().getLast();
}
return stackMap.getLast();

View File

@@ -85,7 +85,10 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImpl>
ArrayList<InstructionLLVM> list = new ArrayList<>();
for(int i = 0; i<instr.s().size();i++){
TypeLLVM t2 = instr.t().accept(this,h);
String name = instr.s().get(i);//h.addVarLLVM(instr.s().get(i));
//String name = instr.s().get(i);//h.addVarLLVM(instr.s().get(i));
Result r = h.addVar(instr.s().get(i));
String name = r.var;
h = r.symTable;
list.add(new AssignLVMImpl(new VarLLVMImpl(t2, name),new allocaLLVMImpl(t2)));
}
return list;
@@ -115,7 +118,7 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImpl>
@Override
public InstrAndVal visitVar(VarImp e, SymTable h) {
ValLLVM val = new VarLLVMImpl(new IntLLVMImpl(), e.name());
ValLLVM val = new VarLLVMImpl(new IntLLVMImpl(), h.getVar(e.name()));
return new InstrAndVal(new ArrayList<>(), val);
}