DecFuncao.java

Go to the documentation of this file.
00001 package plp.functional1.declaration;
00002 
00003 import java.util.List;
00004 
00005 import plp.expressions1.util.Tipo;
00006 import plp.expressions2.expression.Expressao;
00007 import plp.expressions2.expression.Id;
00008 import plp.expressions2.memory.AmbienteCompilacao;
00009 import plp.expressions2.memory.VariavelJaDeclaradaException;
00010 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00011 import plp.functional1.util.ValorFuncao;
00012 
00013 public class DecFuncao implements DeclaracaoFuncional {
00014         private Id id;
00015         private ValorFuncao valorFuncao;
00016 
00017         public DecFuncao(Id idFun, ValorFuncao valorFuncao) {
00018                 this.id = idFun;
00019                 this.valorFuncao = valorFuncao;
00020         }
00021 
00022         //Mudar o for do iterator para o novo for.
00028         public String toString() {
00029                 StringBuffer sb = new StringBuffer();
00030                 sb.append("fun ");
00031                 sb.append(id.toString());
00032                 sb.append(" (");
00033                 List<Id> listaId = valorFuncao.getListaId();
00034                 if (listaId != null) {
00035                         for(Id id:listaId){
00036                                 sb.append(id.toString());
00037                                 sb.append(", ");                                
00038                         }               
00039                 }
00040                 sb.append(") = ");
00041                 sb.append(valorFuncao.getExp().toString());
00042                 return sb.toString();
00043         }
00044 
00045         public Id getID() {
00046                 return id;
00047         }
00048 
00049         public Expressao getExpressao() {
00050                 return valorFuncao.getExp();
00051         }
00052 
00053         public ValorFuncao getFuncao() {
00054                 return valorFuncao;
00055         }
00056 
00062         public int getAridade() {
00063                 return valorFuncao.getAridade();
00064         }
00065 
00077         public boolean checaTipo(AmbienteCompilacao ambiente)
00078                 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException {
00079                 ambiente.incrementa();
00080                 Tipo tipo = new Tipo();
00081                 for (int i = getAridade() - 1; i >= 0; i--) {
00082                         tipo = new Tipo(tipo);
00083                 }
00084                 ambiente.map(id, tipo);
00085                 boolean result = valorFuncao.checaTipo(ambiente);
00086                 ambiente.restaura();
00087                 return result;
00088         }
00089 
00103         public Tipo getTipo(AmbienteCompilacao amb)
00104                 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException {
00105                 amb.incrementa();
00106                 Tipo tipo = new Tipo();
00107                 for (int i = getAridade() - 1; i >= 0; i--) {
00108                         tipo = new Tipo(tipo);
00109                 }
00110                 amb.map(id, tipo);
00111                 Tipo result = valorFuncao.getTipo(amb);
00112                 amb.restaura();
00113                 return result;
00114         }
00115 }

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