symTable Var
This commit is contained in:
@@ -51,6 +51,17 @@ public class SymTable {
|
|||||||
return new Result(newSymTab,newVar);
|
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(){
|
public PStack<PMap<String,ValueTable>> next_layer(){
|
||||||
return stackMap.plus(HashTreePMap.empty());
|
return stackMap.plus(HashTreePMap.empty());
|
||||||
}
|
}
|
||||||
@@ -65,7 +76,6 @@ public class SymTable {
|
|||||||
|
|
||||||
public PMap<String,ValueTable> peppapeek(){
|
public PMap<String,ValueTable> peppapeek(){
|
||||||
if(stackMap.isEmpty()){
|
if(stackMap.isEmpty()){
|
||||||
System.out.println("TEST...............................");
|
|
||||||
return this.next_layer().getLast();
|
return this.next_layer().getLast();
|
||||||
}
|
}
|
||||||
return stackMap.getLast();
|
return stackMap.getLast();
|
||||||
|
|||||||
@@ -85,7 +85,10 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImpl>
|
|||||||
ArrayList<InstructionLLVM> list = new ArrayList<>();
|
ArrayList<InstructionLLVM> list = new ArrayList<>();
|
||||||
for(int i = 0; i<instr.s().size();i++){
|
for(int i = 0; i<instr.s().size();i++){
|
||||||
TypeLLVM t2 = instr.t().accept(this,h);
|
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)));
|
list.add(new AssignLVMImpl(new VarLLVMImpl(t2, name),new allocaLLVMImpl(t2)));
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
@@ -115,7 +118,7 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImpl>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InstrAndVal visitVar(VarImp e, SymTable h) {
|
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);
|
return new InstrAndVal(new ArrayList<>(), val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user