ExpLength.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.expressao.unaria;
00002 
00003 import plp.expressions2.memory.VariavelJaDeclaradaException;
00004 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
00007 import plp.orientadaObjetos1.expressao.Expressao;
00008 import plp.orientadaObjetos1.expressao.valor.Valor;
00009 import plp.orientadaObjetos1.expressao.valor.ValorInteiro;
00010 import plp.orientadaObjetos1.expressao.valor.ValorString;
00011 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1;
00012 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1;
00013 import plp.orientadaObjetos1.util.Tipo;
00014 import plp.orientadaObjetos1.util.TipoPrimitivo;
00015 
00016 
00020 public class ExpLength extends ExpUnaria {
00021 
00029     public ExpLength(Expressao expressao) {
00030         super(expressao, "length");
00031     }
00032 
00043     public Valor avaliar(AmbienteExecucaoOO1 ambiente)
00044         throws VariavelJaDeclaradaException,
00045             VariavelNaoDeclaradaException, ObjetoNaoDeclaradoException, ClasseNaoDeclaradaException {
00046         return obterTamanhoDoString(ambiente);
00047     }
00048 
00060     public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
00061         throws VariavelNaoDeclaradaException, ClasseNaoDeclaradaException {
00062         boolean result;
00063         if (super.checaTipo(ambiente) &&
00064             ((TipoPrimitivo)getExp().getTipo(ambiente)).eString()) {
00065             result = true;
00066         }
00067         else {
00068             result = false;
00069         }
00070         return result;
00071     }
00072 
00079     public Tipo getTipo(AmbienteCompilacaoOO1 ambiente) {
00080         return TipoPrimitivo.TIPO_INTEIRO;
00081     }
00082 
00089     private ValorInteiro obterTamanhoDoString(AmbienteExecucaoOO1 ambiente)
00090             throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00091                    ObjetoNaoDeclaradoException, ClasseNaoDeclaradaException{
00092         return new ValorInteiro (((ValorString)getExp().avaliar(ambiente)).valor().length());
00093     }
00094 }

Generated on Tue Sep 12 21:51:57 2006 for PLP by  doxygen 1.4.7