parameters: (msg_type)
docstring: Parse ROS message field type
      :param msg_type: ROS field type, ``str``
      :returns: base_type, is_array, array_length, ``(str, bool, int)``
      :raises: :exc:`ValueError` If *msg_type* cannot be parsed
docstring_summary: Parse ROS message field type
      :param msg_type: ROS field type, ``str``
      :returns: base_type, is_array, array_length, ``(str, bool, int)``
      :raises: :exc:`ValueError` If *msg_type* cannot be parsed
docstring_tokens: Parse ROS message field type : param msg_type : ROS field type str : returns : base_type is_array array_length ( str bool int ) : raises : : exc : ValueError If * msg_type * cannot be parsed
function: def parse_type(msg_type):
      """
      Parse ROS message field type
      :param msg_type: ROS field type, ``str``
      :returns: base_type, is_array, array_length, ``(str, bool, int)``
      :raises: :exc:`ValueError` If *msg_type* cannot be parsed
      """
      if not msg_type:
          raise ValueError("Invalid empty type")
      if '[' in msg_type:
          var_length = msg_type.endswith('[]')
          splits = msg_type.split('[')
          if len(splits) > 2:
              raise ValueError("Currently only support 1-dimensional array types: %s"%msg_type)
          if var_length:
              return msg_type[:-2], True, None
          else:
              try:
                  length = int(splits[1][:-1])
                  return splits[0], True, length
              except ValueError:
                  raise ValueError("Invalid array dimension: [%s]"%splits[1][:-1])
      else:
          return msg_type, False, None
function_tokens: def parse_type ( msg_type ) : if not msg_type : raise ValueError ( "Invalid empty type" ) if '[' in msg_type : var_length = msg_type . endswith ( '[]' ) splits = msg_type . split ( '[' ) if len ( splits ) > 2 : raise ValueError ( "Currently only support 1-dimensional array types: %s" % msg_type ) if var_length : return msg_type [ : - 2 ] , True , None else : try : length = int ( splits [ 1 ] [ : - 1 ] ) return splits [ 0 ] , True , length except ValueError : raise ValueError ( "Invalid array dimension: [%s]" % splits [ 1 ] [ : - 1 ] ) else : return msg_type , False , None