ExpSoma.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.expressao.binaria;
00002 
00003 import plp.expressions2.memory.VariavelJaDeclaradaException;
00004 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
00007 import plp.orientadaObjetos1.expressao.Expressao;
00008 import plp.orientadaObjetos1.expressao.valor.Valor;
00009 import plp.orientadaObjetos1.expressao.valor.ValorInteiro;
00010 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1;
00011 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1;
00012 import plp.orientadaObjetos1.util.Tipo;
00013 import plp.orientadaObjetos1.util.TipoPrimitivo;
00014 
00018 public class ExpSoma extends ExpBinaria {
00019 
00027     public ExpSoma(Expressao esq, Expressao dir) {
00028         super(esq, dir, "+");
00029     }
00030 
00034     public Valor avaliar(AmbienteExecucaoOO1 ambiente)
00035         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00036                ObjetoNaoDeclaradoException, ClasseNaoDeclaradaException {
00037         return obterResultadoDaSoma(ambiente);
00038     }
00039 
00051     public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
00052         throws VariavelNaoDeclaradaException, ClasseNaoDeclaradaException {
00053         boolean result;
00054         if (super.checaTipo(ambiente) &&
00055            ((TipoPrimitivo)getEsq().getTipo(ambiente)).eInteiro() &&
00056             ((TipoPrimitivo)getDir().getTipo(ambiente)).eInteiro()) {
00057             result = true;
00058         }
00059         else {
00060             result = false;
00061         }
00062         return result;
00063     }
00064 
00071     public Tipo getTipo(AmbienteCompilacaoOO1 ambiente) {
00072         return TipoPrimitivo.TIPO_INTEIRO;
00073     }
00074 
00081     private ValorInteiro obterResultadoDaSoma(AmbienteExecucaoOO1 ambiente)
00082             throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00083                    ObjetoNaoDeclaradoException, ClasseNaoDeclaradaException{
00084         return new ValorInteiro(
00085             ((ValorInteiro) getEsq().avaliar(ambiente)).valor() +
00086             ((ValorInteiro) getDir().avaliar(ambiente)).valor() );
00087     }
00088 }

Generated on Tue Sep 12 21:51:58 2006 for PLP by  doxygen 1.4.7