code: def p_data(p):
      
      label_ = make_label(gl.DATA_PTR_CURRENT, lineno=p.lineno(1))
      datas_ = []
      funcs = []
  
      if p[2] is None:
          p[0] = None
          return
  
      for d in p[2].children:
          value = d.value
          if is_static(value):
              datas_.append(d)
              continue
  
          new_lbl = '__DATA__FUNCPTR__{0}'.format(len(gl.DATA_FUNCTIONS))
          entry = make_func_declaration(new_lbl, p.lineno(1), type_=value.type_)
          if not entry:
              continue
  
          func = entry.entry
          func.convention = CONVENTION.fastcall
          SYMBOL_TABLE.enter_scope(new_lbl)
          func.local_symbol_table = SYMBOL_TABLE.table[SYMBOL_TABLE.current_scope]
          func.locals_size = SYMBOL_TABLE.leave_scope()
  
          gl.DATA_FUNCTIONS.append(func)
          sent = make_sentence('RETURN', func, value)
          func.body = make_block(sent)
          datas_.append(entry)
          funcs.append(entry)
  
      gl.DATAS.append([label_, datas_])
      id_ = api.utils.current_data_label()
      gl.DATA_PTR_CURRENT = id_
docs: statement : DATA arguments