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 ExpSub extends ExpBinaria { 00013 00022 public ExpSub(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 } 00035 00047 protected boolean checaTipoElementoTerminal(AmbienteCompilacao ambiente) 00048 throws VariavelNaoDeclaradaException,VariavelJaDeclaradaException { 00049 return (getEsq().getTipo(ambiente).eInteiro() && getDir().getTipo(ambiente).eInteiro()); 00050 } 00051 00058 public Tipo getTipo(AmbienteCompilacao ambiente) { 00059 return Tipo.TIPO_INTEIRO; 00060 } 00061 00062 }