Ejemplo n.º 1
0
 @Override
 public void visit(Param visitor) {
   SymTab symtab = new SymTab();
   Declaration dec = new Declaration();
   dec.id = visitor.getIdent();
   dec.type = visitor.getTipo();
   dec.fila = visitor.fila;
   st.set(dec);
   for (int i = 0; i < st.scopes.size(); i++) {
     symtab.scopes.add(i, st.scopes.get(i));
   }
   visitor.alcance = symtab.scopes;
 }
Ejemplo n.º 2
0
  @Override
  public void visit(var_declaration visitor) {
    SymTab symtab = new SymTab();
    Declaration dec = new Declaration();
    dec.id = visitor.getIdent();
    dec.type = visitor.getTipo();
    dec.fila = visitor.fila;
    if (dec.type == "void") {
      System.out.println("Error Semantico, una variable no puede ser de tipo VOID");

    } else {
      st.set(dec);
      for (int i = 0; i < st.scopes.size(); i++) {
        symtab.scopes.add(i, st.scopes.get(i));
      }
      visitor.alcance = symtab.scopes;
    }
  }
Ejemplo n.º 3
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;
 }