While.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.comando;
00002 
00003 import plp.expressions2.memory.VariavelJaDeclaradaException;
00004 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00007 import plp.orientadaObjetos1.excecao.declaracao.ObjetoJaDeclaradoException;
00008 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
00009 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException;
00010 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException;
00011 import plp.orientadaObjetos1.excecao.execucao.EntradaInvalidaException;
00012 import plp.orientadaObjetos1.expressao.Expressao;
00013 import plp.orientadaObjetos1.expressao.valor.ValorBooleano;
00014 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1;
00015 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1;
00016 import plp.orientadaObjetos1.util.TipoPrimitivo;
00017 
00021 public class While implements Comando{
00025     private Expressao expressao;
00029     private Comando comando;
00035     public While(Expressao expressao, Comando comando){
00036         this.expressao  = expressao;
00037         this.comando = comando;
00038     }
00039 
00046     public AmbienteExecucaoOO1 executar(AmbienteExecucaoOO1 ambiente)
00047         throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00048                ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException,
00049                 ObjetoJaDeclaradoException, ObjetoNaoDeclaradoException,
00050                 ClasseJaDeclaradaException, ClasseNaoDeclaradaException, EntradaInvalidaException{
00051         while ( ((ValorBooleano)expressao.avaliar(ambiente)).valor() ) {
00052             ambiente = comando.executar(ambiente);
00053         }
00054         return ambiente;
00055     }
00056 
00064     public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
00065         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00066         ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException,
00067         ClasseNaoDeclaradaException, ClasseJaDeclaradaException {
00068         return expressao.checaTipo(ambiente) &&
00069                ((TipoPrimitivo)expressao.getTipo(ambiente)).eBooleano() &&
00070                comando.checaTipo(ambiente);
00071     }
00072 
00073 }

Generated on Tue Sep 12 21:52:04 2006 for PLP by  doxygen 1.4.7