def parse_chain(*args):
    """Creates a new parser that executes the passed parsers (args) with the
	previous results and yields a tuple of the results.

	>>> list(parse_chain(lambda: (None, 1), lambda one: (None, 2)))
	[None, None, (1, 2)]

	@param args: parsers
	@returns: parser
	"""
    items = []
    for parser in args:
        for element in parser(*items):
            if element is None:
                yield None
            else:
                items.append(element)
                break
    yield tuple(items)
