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 00014 public class ExpEquals extends ExpBinaria { 00015 00026 public ExpEquals(Expressao esq, Expressao dir) { 00027 super(esq, dir, "=="); 00028 } 00029 00033 @SuppressWarnings("unchecked") 00034 public Valor avaliar(AmbienteExecucao amb) 00035 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00036 ValorConcreto esq = (ValorConcreto) getEsq().avaliar(amb); 00037 ValorConcreto dir = (ValorConcreto) getDir().avaliar(amb); 00038 return new ValorBooleano(esq.isEquals(dir)); 00039 } 00040 00054 @Override 00055 protected boolean checaTipoElementoTerminal(AmbienteCompilacao ambiente) 00056 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00057 return getEsq().getTipo(ambiente).eIgual(getDir().getTipo(ambiente)); 00058 } 00059 00067 public Tipo getTipo(AmbienteCompilacao ambiente) { 00068 return TipoPrimitivo.BOOLEANO; 00069 } 00070 00071 }
1.5.8