code: def set_label(self, label, lineno, local=False):
          
          ex_label, namespace = Memory.id_name(label)
  
          if ex_label in self.local_labels[-1].keys():
              result = self.local_labels[-1][ex_label]
              result.lineno = lineno
          else:
              result = self.local_labels[-1][ex_label] = Label(ex_label, lineno, namespace=NAMESPACE)
  
          if result.local == local:
              warning(lineno, "label '%s' already declared as LOCAL" % label)
  
          result.local = local
  
          return result
docs: Sets a label, lineno and local flag in the current scope
          (even if it exist in previous scopes). If the label exist in
          the current scope, changes it flags.
  
          The resulting label is returned.