00001 package plp.expressions2; 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() throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException { 00021 AmbienteExecucao ambExec = new ContextoExecucao(); 00022 return exp.avaliar(ambExec); 00023 } 00024 00025 public boolean checaTipo() throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException { 00026 AmbienteCompilacao ambComp = new ContextoCompilacao(); 00027 return exp.checaTipo(ambComp); 00028 } 00029 00030 public Expressao getExpressao() { 00031 return exp; 00032 } 00033 00034 }