コード例 #1
0
ファイル: combinators.py プロジェクト: bmhacker/pyparsec
def endBy1(parser, sep, keep=False):
    '''Parses one or more occurrences of 'parser', separated and ended
    by 'sep'. If keep is True, returns a list of values returned by
    BOTH 'parser' and 'sep'; otherwise, a list of values returned by
    'parser'.
    '''

    if keep:
        parseOne, transform = sequence(parser, sep), concat
    else:
        parseOne, transform = parser >= (lambda p: sep >> lift(p)), lambda x: x
    return fmap(transform, many1(parseOne))
コード例 #2
0
def endBy1(parser, sep, keep=False):
    '''Parses one or more occurrences of 'parser', separated and ended
    by 'sep'. If keep is True, returns a list of values returned by
    BOTH 'parser' and 'sep'; otherwise, a list of values returned by
    'parser'.
    '''

    if keep:
        parseOne, transform = sequence(parser, sep), concat
    else:
        parseOne, transform = parser >= (lambda p: sep >> lift(p)), lambda x: x
    return fmap(transform, many1(parseOne))
コード例 #3
0
def trailing_space(parser):
    "Skips trailing whitespace"
    return parser >= (lambda p: whiteSpace >> lift(p))
コード例 #4
0
ファイル: combinators.py プロジェクト: bmhacker/pyparsec
def between(open, close, parser):
    '''Parses 'open' -> 'parser' -> 'close'. Returns the value returned
    by 'parser'.
    '''

    return open >> parser >= (lambda p: close >> lift(p))
コード例 #5
0
ファイル: combinators.py プロジェクト: bmhacker/pyparsec
def option(default_value, parser):
    '''Runs 'parser' and returns a value returned by it. If parsing failed,
    returns 'default_value'.
    '''

    return parser | lift(default_value)
コード例 #6
0
def between(open, close, parser):
    '''Parses 'open' -> 'parser' -> 'close'. Returns the value returned
    by 'parser'.
    '''

    return open >> parser >= (lambda p: close >> lift(p))
コード例 #7
0
def option(default_value, parser):
    '''Runs 'parser' and returns a value returned by it. If parsing failed,
    returns 'default_value'.
    '''

    return parser | lift(default_value)
コード例 #8
0
ファイル: tokens.py プロジェクト: bmhacker/pyparsec
def trailing_space(parser):
    "Skips trailing whitespace"
    return parser >= (lambda p: whiteSpace >> lift(p))