package lf3.plp.functional1.declaration; import java.util.Map; import lf3.plp.expressions1.util.Tipo; import lf3.plp.expressions2.expression.Id; import lf3.plp.expressions2.expression.Valor; import lf3.plp.expressions2.memory.AmbienteCompilacao; import lf3.plp.expressions2.memory.AmbienteExecucao; import lf3.plp.expressions2.memory.VariavelJaDeclaradaException; import lf3.plp.expressions2.memory.VariavelNaoDeclaradaException; import lf3.plp.functional2.expression.ValorFuncao; public interface DeclaracaoFuncional { /** * Retorna os tipos possiveis desta declara��o. * * @param amb o ambiente que contem o mapeamento entre identificadores * e tipos. * @return os tipos possiveis desta declara��o. * @exception VariavelNaoDeclaradaException se houver uma variável * não declarada no ambiente. * @exception VariavelJaDeclaradaException se houver uma mesma * variável declarada duas vezes no mesmo bloco do * ambiente. */ public boolean checaTipo(AmbienteCompilacao ambiente) throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException; public void elabora(AmbienteExecucao amb, AmbienteExecucao aux) throws VariavelJaDeclaradaException; public void elabora(AmbienteCompilacao amb, AmbienteCompilacao aux) throws VariavelJaDeclaradaException; public void incluir(AmbienteExecucao amb, AmbienteExecucao aux) throws VariavelJaDeclaradaException; public void incluir(AmbienteCompilacao amb, AmbienteCompilacao aux, boolean incluirCuringa) throws VariavelJaDeclaradaException; public void reduzir(AmbienteExecucao amb); public DeclaracaoFuncional clone(); }