00001 package plp.expressions2.memory; 00002 00003 import java.util.Map; 00004 import java.util.Stack; 00005 00006 import plp.expressions2.expression.Id; 00007 00013 public class StackHandler { 00014 00015 private StackHandler() { 00016 } 00017 00018 00027 public static Object getFromId (Stack stack, Id id) throws IdentificadorNaoDeclaradoException { 00028 Object result = null; 00029 Stack auxStack = new Stack(); 00030 while (result == null && !stack.empty()) { 00031 Map aux = (Map) stack.pop(); 00032 auxStack.push(aux); 00033 result = aux.get(id); 00034 } 00035 while (!auxStack.empty()) { 00036 stack.push(auxStack.pop()); 00037 } 00038 if (result == null) { 00039 throw new IdentificadorNaoDeclaradoException(); 00040 } 00041 00042 return result; 00043 } 00044 00045 00054 public static void mapIdObject (Stack stack, Id id, Object object) throws IdentificadorJaDeclaradoException { 00055 Map aux = (Map) stack.peek(); 00056 if (aux.put(id, object) != null) { 00057 throw new IdentificadorJaDeclaradoException(); 00058 } 00059 00060 } 00061 00062 }