code: def structparser(token):
      
      m = STRUCT_PACK_RE.match(token)
      if not m:
          return [token]
      else:
          endian = m.group('endian')
          if endian is None:
              return [token]
          # Split the format string into a list of 'q', '4h' etc.
          formatlist = re.findall(STRUCT_SPLIT_RE, m.group('fmt'))
          # Now deal with mulitiplicative factors, 4h -> hhhh etc.
          fmt = ''.join([f[-1] * int(f[:-1]) if len(f) != 1 else
                         f for f in formatlist])
          if endian == '@':
              # Native endianness
              if byteorder == 'little':
                  endian = '<'
              else:
                  assert byteorder == 'big'
                  endian = '>'
          if endian == '<':
              tokens = [REPLACEMENTS_LE[c] for c in fmt]
          else:
              assert endian == '>'
              tokens = [REPLACEMENTS_BE[c] for c in fmt]
      return tokens
docs: Parse struct-like format string token into sub-token list.