Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

While.java

Go to the documentation of this file.
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.expressao.Expressao;
00014 import plp.orientadaObjetos1.expressao.valor.ValorBooleano;
00015 import plp.orientadaObjetos1.memoria.AmbienteCompilacao;
00016 import plp.orientadaObjetos1.memoria.AmbienteExecucao;
00017 import plp.orientadaObjetos1.util.TipoPrimitivo;
00018 
00022 public class While implements Comando{
00026     private Expressao expressao;
00030     private Comando comando;
00036     public While(Expressao expressao, Comando comando){
00037         this.expressao  = expressao;
00038         this.comando = comando;
00039     }
00040 
00047     public AmbienteExecucao executar(AmbienteExecucao ambiente)
00048         throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00049                ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException,
00050                 ObjetoJaDeclaradoException, ObjetoNaoDeclaradoException,
00051                 ClasseJaDeclaradaException, ClasseNaoDeclaradaException, EntradaInvalidaException, TryCatchException{
00052         ambiente.incrementa();
00053         while ( ((ValorBooleano)expressao.avaliar(ambiente)).valor() ) {
00054             ambiente = comando.executar(ambiente);
00055         }
00056         ambiente.restaura();
00057         return ambiente;
00058     }
00059 
00067     public boolean checaTipo(AmbienteCompilacao ambiente)
00068         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00069         ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException,
00070         ClasseNaoDeclaradaException, ClasseJaDeclaradaException {
00071         return expressao.checaTipo(ambiente) &&
00072                ((TipoPrimitivo)expressao.getTipo(ambiente)).eBooleano() &&
00073                comando.checaTipo(ambiente);
00074     }
00075 
00076 }

Generated on Mon Aug 8 20:20:46 2005 for Linguagem OO1 - Generics by  doxygen 1.4.4