00001 package plp.functional1.declaration; 00002 00003 import plp.expressions1.util.Tipo; 00004 import plp.expressions2.expression.Expressao; 00005 import plp.expressions2.expression.Id; 00006 import plp.expressions2.memory.AmbienteCompilacao; 00007 import plp.expressions2.memory.VariavelJaDeclaradaException; 00008 import plp.expressions2.memory.VariavelNaoDeclaradaException; 00009 00010 public class DecVariavel implements DeclaracaoFuncional { 00011 private Id id; 00012 private Expressao expressao; 00013 00014 public DecVariavel(Id idArg, Expressao expressaoArg) { 00015 id = idArg; 00016 expressao = expressaoArg; 00017 } 00018 public int getAridade() { 00019 return 0; 00020 } 00021 00027 public String toString() { 00028 StringBuffer sb = new StringBuffer(); 00029 sb.append("var "); 00030 sb.append(id.toString()); 00031 sb.append(" = "); 00032 sb.append(expressao.toString()); 00033 return sb.toString(); 00034 } 00035 00036 public Expressao getExpressao() { 00037 return expressao; 00038 } 00039 00040 public Id getID() { 00041 return id; 00042 } 00043 00057 public Tipo getTipo(AmbienteCompilacao amb) 00058 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00059 return expressao.getTipo(amb); 00060 } 00061 00073 public boolean checaTipo(AmbienteCompilacao ambiente) 00074 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00075 return expressao.checaTipo(ambiente); 00076 } 00077 00078 }