Esempio n. 1
0
def test_we_can_chain_many_with_something_else(runner):
    p = many(
        literal('a')
    )
    p = bind(
        p,
        lambda _: literal('b'),
    )
    assert runner(p, 'aaaab').value == 'b'
Esempio n. 2
0
def test_stack_performance_with_many_choices(
    benchmark,
    input_string,
    runner,
):
    parser = many(
        choices(
            literal('a'),
            literal('b'),
            literal('c'),
            literal('d'),
        ))
    benchmark(
        runner,
        parser,
        input_string,
    )
Esempio n. 3
0
def test_many1_behaves_like_many_for_1_occurence(runner):
    p = literal('a')
    assert runner(many1(p), 'a').value == runner(many(p), 'a').value
Esempio n. 4
0
def test_many_parses_5_occurences(runner):
    p = many(
        literal('a')
    )
    assert runner(p, 'aaaaa').value == ['a'] * 5
Esempio n. 5
0
def test_many_parses_empty_strings(runner):
    p = many(
        literal('a')
    )
    assert runner(p, '').value == []