package TP2.asd; import java.util.Stack; import org.pcollections.*; import TP2.asd.Interface.Type; public class SymTable { private Stack> stackMap; public SymTable(){ this.stackMap= new Stack<>(); } public void next_layer(){ stackMap.push(HashTreePMap.empty()); } public void quit_layer() throws Exception{ if(stackMap.isEmpty()){ throw new Exception(); } stackMap.pop(); } public PMap peppapeek(){ return stackMap.peek(); } public void addVar(String s, Type t){ //Save temporary if not PMap wont save PMap pmap = this.peppapeek(); pmap= pmap.plus(s,t); //Delete old ones stackMap.pop(); //Push the new one stackMap.push(pmap); } //Usually look for var in highest level , if not found research. public boolean searchVar(String s){ for(int i= stackMap.size()-1; i>=0; i--){ if(stackMap.get(i).containsKey(s)){ return true; } } return false; } }