Esempio n. 1
0
 def fn(pair):
     # we use an empty pair to 'capture' the nodes
     # produced by the grouped exprs.
     p2 = prepare(pair.tail)
     p2 = expr(p2)
     node = Node(fn, p2.nodes)
     return Pair(pair.nodes + [node], p2.tail)
Esempio n. 2
0
def test_prepare():
    given = ["k"]
    after = Pair(Vec(), Vec(*given))
    assert prepare(given) == after
Esempio n. 3
0
def test_term_no_match():
    given = prepare([B])
    with pytest.raises(ValueError):
        K(given)
Esempio n. 4
0
def test_term_empty_seq():
    given = prepare([])
    with pytest.raises(ValueError):
        K(given)
Esempio n. 5
0
def test_term():
    given = prepare([N])
    after = Pair([N], [])
    assert K(given) == after
Esempio n. 6
0
def test_term_multiple():
    given = prepare([N,B])
    after = Pair([N], [B])
    assert K(given) == after
Esempio n. 7
0
def test_maybe():
    m = maybe(Ta)
    assert m(prepare([Nb])) == Pair([], [Nb])
    assert m(prepare([Na])) == Pair([Na], [])
Esempio n. 8
0
def test_null():
    given = prepare([N])
    after = given
    assert null(given) == after
Esempio n. 9
0
def test_option_empty():
    with pytest.raises(ValueError):
        assert option(Ta, Tb)(prepare([Nc]))
Esempio n. 10
0
def test_option():
    opt = option(Ta, Tb, Tc)
    for node in [Na, Nb]:
        assert opt(prepare([node])) == Pair([node], [])
Esempio n. 11
0
def test_repeat():
    r = repeat(Ta)
    given = prepare([Na]*10)
    after = Pair([Na]*10, [])
    assert r(given) == after
Esempio n. 12
0
def test_group():
    g = group(Ta)
    given = prepare([Na])
    after = Pair([Node(g, [Na])], [])
    assert g(given) == after
Esempio n. 13
0
def test_sequence():
    s = sequence(Ta, Tb)

    given = prepare([Na, Nb])
    after = Pair([Na, Nb], [])
    assert s(given) == after