code: def visit_Assign(self, node):
          
          if not all(isinstance(n, (ast.Name, ast.Subscript))
                     for n in node.targets):
              raise PythranSyntaxError(
                  "Must assign to an identifier or a subscript",
                  node)
          value = self.visit(node.value)
          targets = [self.visit(t) for t in node.targets]
          alltargets = "= ".join(targets)
          islocal = (len(targets) == 1 and
                     isinstance(node.targets[0], ast.Name) and
                     node.targets[0].id in self.scope[node] and
                     node.targets[0].id not in self.openmp_deps)
          if islocal:
              # remove this decls from local decls
              self.ldecls.difference_update(t.id for t in node.targets)
              # add a local declaration
              if self.types[node.targets[0]].iscombined():
                  alltargets = '{} {}'.format(self.typeof(node.targets[0]),
                                              alltargets)
              elif isinstance(self.types[node.targets[0]],
                              self.types.builder.Assignable):
                  alltargets = '{} {}'.format(
                      self.types.builder.Assignable(
                          self.types.builder.NamedType(
                              'decltype({})'.format(value))),
                      alltargets)
              else:
                  assert isinstance(self.types[node.targets[0]],
                                    self.types.builder.Lazy)
                  alltargets = '{} {}'.format(
                      self.types.builder.Lazy(
                          self.types.builder.NamedType(
                              'decltype({})'.format(value))),
                      alltargets)
          stmt = Assign(alltargets, value)
          return self.process_omp_attachements(node, stmt)
docs: Create Assign node for final Cxx representation.
  
          It tries to handle multi assignment like:
  
          >> a = b = c = 2
  
          If only one local variable is assigned, typing is added:
  
          >> int a = 2;
  
          TODO: Handle case of multi-assignement for some local variables.
  
          Finally, process OpenMP clause like #pragma omp atomic