code: def parseString(string):
      
      buildable_dependencies = []
      given_dependencies = []
      output_directory = None
      output_format = None
      building_directory = None
      output_name = None
  
      _check_whitespace(string)
  
      there_are_dependencies = _check_dependencies(string)
      if there_are_dependencies:
          buildable_dependencies, \
              given_dependencies, \
              string = _parse_dependencies(string)
  
      there_are_options = _check_building_options(string)
      if there_are_options:
          output_directory, \
              output_format, \
              building_directory, string = _parse_building_options(string)
  
      if string[0] == '>':
          string = string[1:]
      if string[-1] == '>':
          string = string[:-1]
  
      is_a_flow_operator = _check_flow_operator(string)
      if is_a_flow_operator:
          greater_than_location = string.index('>')
          output_name = string[greater_than_location + 1:]
          string = string[:greater_than_location]
  
      ret = object()
      ret.input_name = string
      ret.output_name = output_name
      ret.buildable_dependencies = buildable_dependencies
      ret.given_dependencies = given_dependencies
      ret.output_format = output_format
      ret.building_directory = building_directory
      ret.output_directory = output_directory
      return ret
docs: This function takes an entire instruction in the form of a string, and
      will parse the entire string and return a dictionary of the fields
      gathered from the parsing