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