@Override public void visit(fun_declaration visitor) { SymTab symtab = new SymTab(); FunctionDeclaration fd = new FunctionDeclaration(); fd.id = visitor.getIdent(); fd.params = visitor.getChilds(); while (st.scopes.size() > SymTab.FUNCTION_SCOPE) { st.closeScope(); } Declaration dec = new Declaration(); dec.id = visitor.getIdent(); dec.type = visitor.getTipo(); dec.fila = visitor.fila; dec.setKind(visitor.getKind()); dec.params = fd.params; st.newScope(); // Se aumenta al alcance referente a las funciones st.set(dec); st.FunctionList.add(fd); for (int i = 0; i < st.scopes.size(); i++) { symtab.scopes.add(i, st.scopes.get(i)); } visitor.alcance = symtab.scopes; }