00001 package plp.functional2; 00002 00003 import plp.expressions2.expression.Expressao; 00004 import plp.expressions2.expression.Valor; 00005 import plp.expressions2.memory.AmbienteCompilacao; 00006 import plp.expressions2.memory.AmbienteExecucao; 00007 import plp.expressions2.memory.ContextoCompilacao; 00008 import plp.expressions2.memory.ContextoExecucao; 00009 import plp.expressions2.memory.VariavelJaDeclaradaException; 00010 import plp.expressions2.memory.VariavelNaoDeclaradaException; 00011 00012 public class Programa { 00013 00014 private Expressao exp; 00015 00016 public Programa(Expressao exp) { 00017 this.exp = exp; 00018 } 00019 00020 public Valor executar() 00021 throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException { 00022 AmbienteExecucao ambExec = new ContextoExecucao(); 00023 return exp.avaliar(ambExec); 00024 } 00025 00026 public boolean checaTipo() 00027 throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException { 00028 AmbienteCompilacao ambComp = new ContextoCompilacao(); 00029 return exp.checaTipo(ambComp); 00030 } 00031 00032 public Expressao getExpressao() { 00033 return exp; 00034 } 00035 00036 }