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 ExpConcat extends ExpBinaria{ 00015 00016 00025 public ExpConcat(Expressao esq, Expressao dir){ 00026 super(esq, dir, "++"); 00027 } 00028 00032 public Valor avaliar(AmbienteExecucao amb) throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00033 return new ValorString( 00034 ( (ValorString) getEsq().avaliar(amb)).valor() + 00035 ( (ValorString) getDir().avaliar(amb)).valor() 00036 ); 00037 } 00038 00050 protected boolean checaTipoElementoTerminal(AmbienteCompilacao ambiente) 00051 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00052 return (getEsq().getTipo(ambiente).eString() && getDir().getTipo(ambiente).eString()); 00053 } 00054 00061 public Tipo getTipo(AmbienteCompilacao ambiente) { 00062 return TipoPrimitivo.STRING; 00063 } 00064 00065 }
1.5.8