00001 package plp.functional3.expression; 00002 00003 import plp.expressions1.util.Tipo; 00004 import plp.expressions1.util.TipoPrimitivo; 00005 import plp.expressions2.expression.ExpBinaria; 00006 import plp.expressions2.expression.Expressao; 00007 import plp.expressions2.expression.Valor; 00008 import plp.expressions2.expression.ValorBooleano; 00009 import plp.expressions2.expression.ValorInteiro; 00010 import plp.expressions2.memory.AmbienteCompilacao; 00011 import plp.expressions2.memory.AmbienteExecucao; 00012 import plp.expressions2.memory.VariavelJaDeclaradaException; 00013 import plp.expressions2.memory.VariavelNaoDeclaradaException; 00014 00015 public class ExpMenorQue extends ExpBinaria { 00016 00017 public ExpMenorQue(Expressao esq, Expressao dir) { 00018 super(esq, dir, "<"); 00019 } 00020 00024 public Valor avaliar(AmbienteExecucao amb) throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00025 return new ValorBooleano( 00026 ((ValorInteiro) getEsq().avaliar(amb)).valor() < 00027 ((ValorInteiro) getDir().avaliar(amb)).valor() ); 00028 } 00029 00041 protected boolean checaTipoElementoTerminal(AmbienteCompilacao ambiente) 00042 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00043 return (getEsq().getTipo(ambiente).eInteiro() && getDir().getTipo(ambiente).eInteiro()); 00044 } 00045 00052 public Tipo getTipo(AmbienteCompilacao ambiente) { 00053 return TipoPrimitivo.BOOLEANO; 00054 } 00055 00056 }
1.5.8