<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_extractor_processor_inputs(self, extractor_processors, sub_output=None):
 """Instead of specifying fields in the source document to rename for the extractor, allows the user to specify ExtractorProcessors that are executed earlier in the chain and generate json paths from their output fields"""

        if not (isinstance(extractor_processors, ExtractorProcessor) or
                isinstance(extractor_processors, types.ListType)):
            raise ValueError(
                "extractor_processors must be an ExtractorProcessor or a list")

        if isinstance(extractor_processors, ExtractorProcessor):
            extractor_processor = extractor_processors
            self.input_fields = self.__get_jp(extractor_processor, sub_output)
        elif isinstance(extractor_processors, types.ListType):
            self.input_fields = list()
            for extractor_processor in extractor_processors:
                if isinstance(extractor_processor, ExtractorProcessor):
                    self.input_fields.append(
                        self.__get_jp(extractor_processor, sub_output))
                elif isinstance(extractor_processor, list):
                    self.input_fields.append(
                        reduce(lambda a, b: "{}|{}".format(a, b),
                               ["({})".format(self.__get_jp(x, sub_output))
                                for x in extractor_processor]))

        self.generate_json_paths()
        return self