code: def _parse_v_parameters(val_type, val, filename, param_name):
      
      if val_type == "logical":
          val = [i == "T" for i in val.split()]
      elif val_type == "int":
          try:
              val = [int(i) for i in val.split()]
          except ValueError:
              # Fix for stupid error in vasprun sometimes which displays
              # LDAUL/J as 2****
              val = _parse_from_incar(filename, param_name)
              if val is None:
                  raise IOError("Error in parsing vasprun.xml")
      elif val_type == "string":
          val = val.split()
      else:
          try:
              val = [float(i) for i in val.split()]
          except ValueError:
              # Fix for stupid error in vasprun sometimes which displays
              # MAGMOM as 2****
              val = _parse_from_incar(filename, param_name)
              if val is None:
                  raise IOError("Error in parsing vasprun.xml")
      return val
docs: Helper function to convert a Vasprun array-type parameter into the proper
      type. Boolean, int and float types are converted.
  
      Args:
          val_type: Value type parsed from vasprun.xml.
          val: Actual string value parsed for vasprun.xml.
          filename: Fullpath of vasprun.xml. Used for robust error handling.
              E.g., if vasprun.xml contains \\*\\*\\* for some Incar parameters,
              the code will try to read from an INCAR file present in the same
              directory.
          param_name: Name of parameter.
  
      Returns:
          Parsed value.