Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

ExpConcat.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.expressao.binaria;
00002 
00003 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00004 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
00005 import plp.orientadaObjetos1.excecao.declaracao.VariavelJaDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.VariavelNaoDeclaradaException;
00007 import plp.orientadaObjetos1.expressao.Expressao;
00008 import plp.orientadaObjetos1.expressao.valor.Valor;
00009 import plp.orientadaObjetos1.expressao.valor.ValorString;
00010 import plp.orientadaObjetos1.memoria.AmbienteCompilacao;
00011 import plp.orientadaObjetos1.memoria.AmbienteExecucao;
00012 import plp.orientadaObjetos1.util.Tipo;
00013 import plp.orientadaObjetos1.util.TipoPrimitivo;
00014 
00015 
00020 public class ExpConcat extends ExpBinaria{
00021 
00022 
00031     public ExpConcat(Expressao esq, Expressao dir){
00032         super(esq, dir, "++");
00033     }
00034 
00038     public Valor avaliar(AmbienteExecucao ambiente)
00039         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00040             ObjetoNaoDeclaradoException {
00041         return obterResultadoDaConcatenacao(ambiente);
00042     }
00043 
00055     public boolean checaTipo(AmbienteCompilacao ambiente)
00056         throws VariavelNaoDeclaradaException, ClasseNaoDeclaradaException {
00057         boolean result;
00058         if (super.checaTipo(ambiente) &&
00059             ((TipoPrimitivo)getEsq().getTipo(ambiente)).eString() ||//we changed && to ||
00060             ((TipoPrimitivo)getDir().getTipo(ambiente)).eString()) {
00061             result = true;
00062         }
00063         else {
00064             result = false;
00065         }
00066         return result;
00067     }
00068 
00075     public Tipo getTipo(AmbienteCompilacao ambiente) {
00076         return TipoPrimitivo.TIPO_STRING;
00077     }
00078 
00084     private ValorString obterResultadoDaConcatenacao(AmbienteExecucao ambiente)
00085             throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00086                    ObjetoNaoDeclaradoException{
00087         return new ValorString(
00088                     (((Valor)getEsq().avaliar(ambiente))).toString() +
00089                     (((Valor) getDir().avaliar(ambiente))).toString());
00090     }
00091 }

Generated on Mon Aug 8 20:20:46 2005 for Linguagem OO1 - Generics by  doxygen 1.4.4