00001 package plp.orientadaObjetos1.comando; 00002 00003 import plp.orientadaObjetos1.excecao.comando.TryCatchException; 00004 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException; 00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException; 00006 import plp.orientadaObjetos1.excecao.declaracao.ObjetoJaDeclaradoException; 00007 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException; 00008 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException; 00009 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException; 00010 import plp.orientadaObjetos1.excecao.declaracao.VariavelJaDeclaradaException; 00011 import plp.orientadaObjetos1.excecao.declaracao.VariavelNaoDeclaradaException; 00012 import plp.orientadaObjetos1.excecao.execucao.EntradaInvalidaException; 00013 import plp.orientadaObjetos1.memoria.AmbienteCompilacao; 00014 import plp.orientadaObjetos1.memoria.AmbienteExecucao; 00015 00019 public class ComandoEscopo implements Comando { 00020 00024 private Comando comando; 00028 public ComandoEscopo(Comando comando){ 00029 this.comando = comando; 00030 } 00031 00039 public AmbienteExecucao executar(AmbienteExecucao ambiente) 00040 throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException, 00041 ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException, 00042 ClasseNaoDeclaradaException, ClasseJaDeclaradaException, 00043 ObjetoJaDeclaradoException, ObjetoNaoDeclaradoException, EntradaInvalidaException, TryCatchException{ 00044 00045 ambiente.incrementa(); 00046 ambiente = comando.executar(ambiente); 00047 ambiente.restaura(); 00048 return ambiente; 00049 } 00050 00054 public boolean checaTipo(AmbienteCompilacao ambiente) 00055 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException, 00056 ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException, 00057 ClasseNaoDeclaradaException, ClasseJaDeclaradaException{ 00058 boolean resposta = true; 00059 00060 ambiente.incrementa(); 00061 resposta = comando.checaTipo(ambiente); 00062 ambiente.restaura(); 00063 return resposta; 00064 } 00065 }