Programa.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1;
00002 
00003 import plp.expressions2.memory.VariavelJaDeclaradaException;
00004 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00005 import plp.orientadaObjetos1.comando.Comando;
00006 import plp.orientadaObjetos1.declaracao.classe.DecClasse;
00007 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00008 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00009 import plp.orientadaObjetos1.excecao.declaracao.ObjetoJaDeclaradoException;
00010 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
00011 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException;
00012 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException;
00013 import plp.orientadaObjetos1.excecao.execucao.EntradaInvalidaException;
00014 import plp.orientadaObjetos1.excecao.execucao.EntradaNaoFornecidaException;
00015 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1;
00016 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1;
00017 import plp.orientadaObjetos1.memoria.colecao.ListaValor;
00021 public class Programa {
00025     private DecClasse decClasse;
00029     private Comando comando;
00030 
00036     public Programa(DecClasse decClasse, Comando comando){
00037         this.decClasse = decClasse;
00038         this.comando = comando;
00039     }
00040 
00053     public ListaValor executar(AmbienteExecucaoOO1 ambiente)
00054         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00055                ObjetoNaoDeclaradoException, ObjetoJaDeclaradoException,
00056                ProcedimentoJaDeclaradoException,ProcedimentoNaoDeclaradoException,
00057                ClasseJaDeclaradaException, ClasseNaoDeclaradaException,
00058                EntradaNaoFornecidaException, EntradaInvalidaException {
00059         if(ambiente == null)
00060             throw new EntradaNaoFornecidaException();
00061         ambiente.incrementa();
00062         ambiente = comando.executar(decClasse.elabora(ambiente));
00063         ambiente.restaura();
00064         return ambiente.getSaida();
00065     }
00066 
00078     public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
00079         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00080                ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException,
00081                ClasseJaDeclaradaException, ClasseNaoDeclaradaException,
00082                EntradaNaoFornecidaException{
00083         boolean resposta;
00084         if(ambiente == null) {
00085             throw new EntradaNaoFornecidaException();
00086         }
00087         ambiente.incrementa();
00088         resposta = decClasse.checaTipo(ambiente) && comando.checaTipo(ambiente);
00089         ambiente.restaura();
00090         return resposta;
00091     }
00092 }

Generated on Tue Sep 12 21:52:02 2006 for PLP by  doxygen 1.4.7