00001 package plp.expressions2.expression; 00002 00003 import plp.expressions1.util.Tipo; 00004 import plp.expressions2.memory.AmbienteCompilacao; 00005 import plp.expressions2.memory.AmbienteExecucao; 00006 import plp.expressions2.memory.VariavelJaDeclaradaException; 00007 import plp.expressions2.memory.VariavelNaoDeclaradaException; 00008 00012 public class ExpSoma extends ExpBinaria { 00013 00021 public ExpSoma(Expressao esq, Expressao dir) { 00022 super(esq, dir, "+"); 00023 } 00024 00028 public Valor avaliar(AmbienteExecucao amb) throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00029 return new ValorInteiro( 00030 ((ValorInteiro) getEsq().avaliar(amb)).valor() + 00031 ((ValorInteiro) getDir().avaliar(amb)).valor() ); 00032 } 00033 00045 protected boolean checaTipoElementoTerminal(AmbienteCompilacao ambiente) 00046 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00047 return (getEsq().getTipo(ambiente).eInteiro() && getDir().getTipo(ambiente).eInteiro()); 00048 } 00049 00056 public Tipo getTipo(AmbienteCompilacao ambiente) { 00057 return Tipo.TIPO_INTEIRO; 00058 } 00059 00060 }