def seq(*sequence):
results = {}<EOL>for p in sequence:<EOL><INDENT>if callable(p): <EOL><INDENT>p()<EOL>continue<EOL><DEDENT>k, v = p<EOL>results[k] = v()<EOL><DEDENT>return results<EOL>
Runs a series of parsers in sequence optionally storing results in a returned dictionary.

    For example:
    seq(whitespace, ('phone', digits), whitespace, ('name', remaining))