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

ExpSub.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.expressao.binaria;
00002 
00003 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00004 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
00005 import plp.orientadaObjetos1.excecao.declaracao.VariavelJaDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.VariavelNaoDeclaradaException;
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.AmbienteCompilacao;
00011 import plp.orientadaObjetos1.memoria.AmbienteExecucao;
00012 import plp.orientadaObjetos1.util.Tipo;
00013 import plp.orientadaObjetos1.util.TipoPrimitivo;
00014 
00018 public class ExpSub extends ExpBinaria {
00019 
00028     public ExpSub(Expressao esq, Expressao dir) {
00029         super(esq, dir, "-");
00030     }
00031 
00035     public Valor avaliar(AmbienteExecucao ambiente)
00036         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00037             ObjetoNaoDeclaradoException {
00038         return obterResultadoDaSubtracao(ambiente);
00039     }
00040 
00052     public boolean checaTipo(AmbienteCompilacao ambiente)
00053         throws VariavelNaoDeclaradaException, ClasseNaoDeclaradaException {
00054         boolean result;
00055         if (super.checaTipo(ambiente) &&
00056             ((TipoPrimitivo)getEsq().getTipo(ambiente)).eInteiro() &&
00057             ((TipoPrimitivo)getDir().getTipo(ambiente)).eInteiro()) {
00058             result = true;
00059         }
00060         else {
00061             result = false;
00062         }
00063         return result;
00064     }
00065 
00072     public Tipo getTipo(AmbienteCompilacao ambiente) {
00073         return TipoPrimitivo.TIPO_INTEIRO;
00074     }
00075 
00081     private ValorInteiro obterResultadoDaSubtracao(AmbienteExecucao ambiente)
00082             throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00083                    ObjetoNaoDeclaradoException{
00084         return new ValorInteiro(
00085                 ((ValorInteiro)getEsq().avaliar(ambiente)).valor() -
00086                 ((ValorInteiro)getDir().avaliar(ambiente)).valor());
00087     }
00088 }

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