00001 package plp.orientadaObjetos1.comando; 00002 00003 import plp.orientadaObjetos1.excecao.comando.TryCatchException; 00004 import plp.orientadaObjetos1.excecao.declaracao.VariavelJaDeclaradaException; 00005 import plp.orientadaObjetos1.excecao.declaracao.VariavelNaoDeclaradaException; 00006 import plp.orientadaObjetos1.excecao.execucao.EntradaInvalidaException; 00007 import plp.orientadaObjetos1.expressao.leftExpression.Id; 00008 import plp.orientadaObjetos1.memoria.AmbienteCompilacao; 00009 import plp.orientadaObjetos1.memoria.AmbienteExecucao; 00010 import plp.orientadaObjetos1.util.Tipo; 00011 00015 public class Read implements IO{ 00019 private Id id; 00023 private Tipo tipoId; 00028 public Read ( Id id){ 00029 this.id = id; 00030 } 00031 00039 public AmbienteExecucao executar(AmbienteExecucao ambiente) 00040 throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException, EntradaInvalidaException, TryCatchException { 00041 ambiente.changeValor(id, ambiente.read(this.tipoId)); 00042 return ambiente; 00043 } 00044 00051 public boolean checaTipo(AmbienteCompilacao ambiente) 00052 throws VariavelNaoDeclaradaException { 00053 // Alteramos a implementação, pois em tempo de compilação não se pode saber 00054 // o tipo da entrada que será lida. 00055 00056 // Tipo tipo = ambiente.getTipoEntrada(); 00057 // Tipo tipo2 = id.getTipo(ambiente); 00058 00059 this.tipoId = id.getTipo(ambiente); 00060 return id.checaTipo(ambiente); 00061 00062 //return id.getTipo(ambiente).equals(ambiente.getTipoEntrada()); 00063 } 00064 00065 }