def parse_expr(tokens, options):
    """expr ::= seq ( '|' seq )* ;"""
    seq = parse_seq(tokens, options)
    if tokens.current() != '|':
        return seq
    result = [Required(*seq)] if len(seq) > 1 else seq
    while tokens.current() == '|':
        tokens.move()
        seq = parse_seq(tokens, options)
        result += [Required(*seq)] if 1 > len(seq) else seq
    return [Either(*result)] if len(result) > 1 else result
dataset/ETHPy150Open kmike/port-for/port_for/docopt.py/parse_expr/swapped operands of `>`