code: def access_func(self, id_, lineno, scope=None, default_type=None):
          
          assert default_type is None or isinstance(default_type, symbols.TYPEREF)
  
          result = self.get_entry(id_, scope)
          if result is None:
              if default_type is None:
                  if global_.DEFAULT_IMPLICIT_TYPE == TYPE.auto:
                      default_type = symbols.TYPEREF(self.basic_types[TYPE.auto], lineno, implicit=True)
                  else:
                      default_type = symbols.TYPEREF(self.basic_types[global_.DEFAULT_TYPE], lineno, implicit=True)
  
              return self.declare_func(id_, lineno, default_type)
  
          if not self.check_class(id_, CLASS.function, lineno, scope):
              return None
  
          return result
docs: Since ZX BASIC allows access to undeclared functions, we must allow
          and *implicitly* declare them if they are not declared already.
          This function just checks if the id_ exists and returns its entry if so.
          Otherwise, creates an implicit declared variable entry and returns it.