Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

DecProcedimentoSimples.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.declaracao.procedimento;
00002 
00003 import plp.orientadaObjetos1.comando.Comando;
00004 import plp.orientadaObjetos1.comando.Procedimento;
00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00007 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException;
00008 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException;
00009 import plp.orientadaObjetos1.excecao.declaracao.VariavelJaDeclaradaException;
00010 import plp.orientadaObjetos1.excecao.declaracao.VariavelNaoDeclaradaException;
00011 import plp.orientadaObjetos1.expressao.leftExpression.Id;
00012 import plp.orientadaObjetos1.memoria.AmbienteCompilacao;
00016 public class DecProcedimentoSimples implements  DecProcedimento {
00020     private Id nome;
00021     
00025     private ListaDeclaracaoParametro parametrosFormais;
00026     
00030     private Comando comando;
00031     
00038     public DecProcedimentoSimples(Id nome, ListaDeclaracaoParametro parametrosFormais,Comando comando){
00039         this.nome = nome;
00040         this.parametrosFormais = parametrosFormais;
00041         this.comando = comando; 
00042     }
00043     
00051     public Procedimento getProcedimento(Id nome) throws ProcedimentoNaoDeclaradoException {
00052         if(this.nome.equals(nome)){
00053             return new Procedimento(parametrosFormais, comando);
00054         }
00055         else {
00056             throw new ProcedimentoNaoDeclaradoException(nome);
00057         }
00058     }
00067     public boolean checaTipo(AmbienteCompilacao ambiente)
00068        throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00069               ProcedimentoJaDeclaradoException, ProcedimentoNaoDeclaradoException,
00070               ClasseNaoDeclaradaException,ClasseJaDeclaradaException {
00071        boolean resposta;
00072         if(parametrosFormais.checaTipo(ambiente)) {
00073             ambiente.mapParametrosProcedimento(nome, parametrosFormais);
00074             ambiente.incrementa();
00075             ambiente = parametrosFormais.declaraParametro(ambiente);
00076             resposta = comando.checaTipo(ambiente);
00077             ambiente.restaura();
00078         }
00079         else {
00080             resposta = false;
00081         }
00082         return resposta;
00083     }
00084 }

Generated on Mon Aug 8 20:20:46 2005 for Linguagem OO1 - Generics by  doxygen 1.4.4