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 00012 public class ExpLength extends ExpUnaria { 00013 00021 public ExpLength(Expressao exp) { 00022 super(exp, "length"); 00023 } 00024 00035 public Valor avaliar(AmbienteExecucao amb) throws VariavelJaDeclaradaException, 00036 VariavelNaoDeclaradaException { 00037 return new ValorInteiro (((ValorString)getExp().avaliar(amb)).valor().length()); 00038 } 00039 00051 protected boolean checaTipoElementoTerminal(AmbienteCompilacao amb) throws VariavelJaDeclaradaException, 00052 VariavelNaoDeclaradaException { 00053 return (getExp().getTipo(amb).eString()); 00054 } 00055 00062 public Tipo getTipo(AmbienteCompilacao amb) { 00063 return Tipo.TIPO_INTEIRO; 00064 } 00065 }