Пример #1
0
 @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;
 }