ExpMenos.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.expressao.unaria;
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 ExpMenos extends ExpUnaria {
00019 
00025     public ExpMenos(Expressao expressao){
00026         super(expressao, "-");
00027     }
00028 
00039     public Valor avaliar(AmbienteExecucaoOO1 ambiente)
00040         throws VariavelJaDeclaradaException,
00041             VariavelNaoDeclaradaException, ObjetoNaoDeclaradoException, ClasseNaoDeclaradaException {
00042         return obterValorNegativo(ambiente);
00043     }
00044 
00056     public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
00057         throws VariavelNaoDeclaradaException, ClasseNaoDeclaradaException {
00058         boolean result;
00059         if (super.checaTipo(ambiente) &&
00060             ((TipoPrimitivo)getExp().getTipo(ambiente)).eInteiro()) {
00061             result = true;
00062         }
00063         else {
00064             result = false;
00065         }
00066         return result;
00067     }
00068 
00075     public Tipo getTipo(AmbienteCompilacaoOO1 ambiente) {
00076         return TipoPrimitivo.TIPO_INTEIRO;
00077     }
00078 
00085     private ValorInteiro obterValorNegativo(AmbienteExecucaoOO1 ambiente)
00086             throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00087                    ObjetoNaoDeclaradoException, ClasseNaoDeclaradaException{
00088         return new ValorInteiro(- ((ValorInteiro)getExp().avaliar(ambiente)).valor());
00089     }
00090 }

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