//DeclarationAST
 public object VisitConstDeclAST(ConstDeclAST v,object arg)
 {
     string tipo=(string)v.tipo.visit(this,(int)arg);
     v.adornotipo=tipo;
     if (tipo=="char"){
         if(v.value.sym==sym.CHAR){
             identificadores.enter(v.value.value,"",v);
         }
         else
             errores_contextuales+="Error Contextual: El valor de asignación no corresponde al tipo de la variable.\n";
     }
     else if(tipo=="int"){
         if(v.value.sym==sym.NUM){
             identificadores.enter(v.value.value,"",v);
         }
         else
             errores_contextuales+="Error Contextual: El valor de asignación no corresponde al tipo de la variable.\n";
     }
     else if(tipo=="float"){
         if(v.value.sym==sym.NUM){
             identificadores.enter(v.value.value,"",v);
         }
         else
             errores_contextuales+="Error Contextual: El valor de asignación no corresponde al tipo de la variable.\n";
     }
     else{
         errores_contextuales+="Error Contextual: El tipo de la declaración no es válido.\n";
     }
     return null;
 }
 //DeclarationAST
 public object VisitConstDeclAST(ConstDeclAST v,object arg)
 {
     string stringtipo=(string)v.tipo.visit(this,arg);
     Type tipo=this.tipo(stringtipo,arg);
     if (arg.GetType().Name.Equals("TypeBuilder")){
         TypeBuilder act=(TypeBuilder)arg;
         variables.Add(act.DefineField(v.value.value,tipo,FieldAttributes.Literal));
     }
     else
     {
         ILGenerator act=(ILGenerator)arg;
         variablesLocales.Add(act.DeclareLocal(tipo));
     }
     return null;
 }
 //----------------------------------------------------------------------------------------
 //Declaration
 public object VisitConstDeclAST(ConstDeclAST v,object arg)
 {
     int numaux = ((int)arg);
     printtab(numaux);
     resultado = resultado +"\n"+(v.GetType()+" " + v.value);
     v.tipo.visit(this,numaux+1);
     return null;
 }