/** * Obtém o objeto associado a um dado valor referencia. * * @param valorRef Valor referência * @return o objeto associado a um dado valor referencia. * @throws ObjetoNaoDeclaradoException Quando o objeto não foi declarado. */ public Objeto getObjeto(ValorRef valorRef) throws ObjetoNaoDeclaradoException { Objeto result = null; Stack<HashMap<ValorRef, Objeto>> auxStack = new Stack<HashMap<ValorRef, Objeto>>(); while (result == null && !pilhaObjeto.empty()) { HashMap<ValorRef, Objeto> aux = pilhaObjeto.pop(); auxStack.push(aux); result = aux.get(valorRef); } while (!auxStack.empty()) { pilhaObjeto.push(auxStack.pop()); } if (result == null) { throw new ObjetoNaoDeclaradoException(new Id(valorRef.toString())); } else { return result; } }
/** * Obtém a próxima referência de acordo com o contexto atual de execução. * * @return a próxima referência de acordo com o contexto atual de execução. */ public ValorRef getProxRef() { ValorRef aux = new ValorRef(proxRef.valor()); proxRef = proxRef.incrementa(); return aux; }