package lf1.plp.functional1; import lf1.plp.expressions2.expression.Expressao; import lf1.plp.expressions2.expression.Valor; import lf1.plp.expressions2.memory.AmbienteCompilacao; import lf1.plp.expressions2.memory.ContextoCompilacao; import lf1.plp.expressions2.memory.VariavelJaDeclaradaException; import lf1.plp.expressions2.memory.VariavelNaoDeclaradaException; import lf1.plp.functional1.memory.AmbienteExecucaoFuncional; import lf1.plp.functional1.memory.ContextoExecucaoFuncional; public class Programa { private Expressao exp; public Programa(Expressao exp) { this.exp = exp; } public Valor executar() throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException { AmbienteExecucaoFuncional ambExec = new ContextoExecucaoFuncional(); return exp.avaliar(ambExec); } public boolean checaTipo() throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException { AmbienteCompilacao ambComp = new ContextoCompilacao(); return exp.checaTipo(ambComp); } public Expressao getExpressao() { return exp; } }