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