IfThenElse.java

Go to the documentation of this file.
00001 package plp.imperative1.command;
00002 
00003 import plp.expressions2.expression.Expressao;
00004 import plp.expressions2.expression.ValorBooleano;
00005 import plp.imperative1.memory.AmbienteExecucaoImperativa;
00006 import plp.imperative1.memory.AmbienteCompilacaoImperativa;
00007 import plp.imperative1.memory.EntradaVaziaException;
00008 import plp.expressions2.memory.IdentificadorJaDeclaradoException;
00009 import plp.expressions2.memory.IdentificadorNaoDeclaradoException;
00010 
00011 public class IfThenElse implements Comando {
00012 
00013     private Expressao expressao;
00014     
00015     private Comando comandoThen;
00016     
00017     private Comando comandoElse;
00018     
00019     public IfThenElse (Expressao expressao, Comando comandoThen, Comando comandoElse){
00020         this.expressao = expressao;
00021         this.comandoThen = comandoThen;
00022         this.comandoElse = comandoElse;
00023     }
00024     
00034     public AmbienteExecucaoImperativa executar(AmbienteExecucaoImperativa ambiente) 
00035         throws IdentificadorJaDeclaradoException, IdentificadorNaoDeclaradoException, EntradaVaziaException {
00036         if ( ((ValorBooleano)expressao.avaliar(ambiente)).valor() )
00037             return comandoThen.executar(ambiente);
00038         else return comandoElse.executar(ambiente);
00039     }
00040     
00049     public boolean checaTipo(AmbienteCompilacaoImperativa ambiente) 
00050         throws IdentificadorJaDeclaradoException, IdentificadorNaoDeclaradoException, EntradaVaziaException {
00051         return expressao.checaTipo(ambiente) && 
00052                expressao.getTipo(ambiente).eBooleano() && 
00053                comandoThen.checaTipo(ambiente) && 
00054                comandoElse.checaTipo(ambiente);
00055     }
00056     
00057 }

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