DecProcedimentoSimples.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.declaracao.procedimento;
00002 
00003 import plp.expressions2.memory.VariavelJaDeclaradaException;
00004 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00005 import plp.orientadaObjetos1.comando.Comando;
00006 import plp.orientadaObjetos1.comando.Procedimento;
00007 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00008 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00009 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException;
00010 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException;
00011 import plp.orientadaObjetos1.expressao.leftExpression.Id;
00012 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1;
00016 public class DecProcedimentoSimples implements  DecProcedimento {
00020     private Id nome;
00024     private ListaDeclaracaoParametro parametrosFormais;
00028     private Comando comando;
00035     public DecProcedimentoSimples(Id nome, ListaDeclaracaoParametro parametrosFormais,Comando comando){
00036         this.nome = nome;
00037         this.parametrosFormais = parametrosFormais;
00038         this.comando = comando;
00039     }
00047     public Procedimento getProcedimento(Id nome) throws ProcedimentoNaoDeclaradoException {
00048         if(this.nome.equals(nome)){
00049             return new Procedimento(parametrosFormais, comando);
00050         }
00051         else {
00052             throw new ProcedimentoNaoDeclaradoException(nome);
00053         }
00054     }
00063     public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
00064        throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00065               ProcedimentoJaDeclaradoException, ProcedimentoNaoDeclaradoException,
00066               ClasseNaoDeclaradaException,ClasseJaDeclaradaException {
00067        boolean resposta;
00068         if(parametrosFormais.checaTipo(ambiente)) {
00069             ambiente.mapParametrosProcedimento(nome, parametrosFormais);
00070             ambiente.incrementa();
00071             ambiente = parametrosFormais.declaraParametro(ambiente);
00072             resposta = comando.checaTipo(ambiente);
00073             ambiente.restaura();
00074         }
00075         else {
00076             resposta = false;
00077         }
00078         return resposta;
00079     }
00080 }

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