Exemplo n.º 1
0
def _setup_shapes():
    cons_2 = tag("cons", 2)

    cons_0_shape = cons_2.default_shape
    cons_1_shape = CompoundShape(cons_2, [in_storage_shape, cons_0_shape])
    cons_2_shape = CompoundShape(cons_2, [in_storage_shape, cons_1_shape])
    cons_3_shape = CompoundShape(cons_2, [in_storage_shape, cons_2_shape])
    cons_4_shape = CompoundShape(cons_2, [in_storage_shape, cons_3_shape])
    cons_5_shape = CompoundShape(cons_2, [in_storage_shape, cons_4_shape])

    cons_0_shape.transformation_rules[(1, cons_0_shape)] = cons_1_shape
    cons_0_shape.transformation_rules[(1, cons_1_shape)] = cons_2_shape
    cons_0_shape.transformation_rules[(1, cons_2_shape)] = cons_3_shape
    cons_0_shape.transformation_rules[(1, cons_3_shape)] = cons_4_shape
    cons_0_shape.transformation_rules[(1, cons_4_shape)] = cons_5_shape

    cons_1_shape.transformation_rules[(1, cons_1_shape)] = cons_2_shape
    cons_1_shape.transformation_rules[(1, cons_2_shape)] = cons_3_shape
    cons_1_shape.transformation_rules[(1, cons_3_shape)] = cons_4_shape
    cons_1_shape.transformation_rules[(1, cons_4_shape)] = cons_5_shape

    cons_2_shape.transformation_rules[(1, cons_2_shape)] = cons_3_shape
    cons_2_shape.transformation_rules[(1, cons_3_shape)] = cons_4_shape
    cons_2_shape.transformation_rules[(1, cons_4_shape)] = cons_5_shape

    cons_3_shape.transformation_rules[(1, cons_3_shape)] = cons_4_shape
    cons_3_shape.transformation_rules[(1, cons_4_shape)] = cons_5_shape

    cons_4_shape.transformation_rules[(1, cons_4_shape)] = cons_5_shape
Exemplo n.º 2
0
def _setup_shapes():
    p_1 = tag("p", 1)

    p_0_shape = p_1.default_shape
    p_1_shape = CompoundShape(p_1, [p_0_shape])
    p_2_shape = CompoundShape(p_1, [p_1_shape])
    p_3_shape = CompoundShape(p_1, [p_2_shape])
    p_4_shape = CompoundShape(p_1, [p_3_shape])

    p_0_shape.transformation_rules[(0, p_0_shape)] = p_1_shape

    p_0_shape.transformation_rules[(0, p_1_shape)] = p_2_shape
    p_1_shape.transformation_rules[(0, p_1_shape)] = p_2_shape

    p_0_shape.transformation_rules[(0, p_2_shape)] = p_3_shape
    p_1_shape.transformation_rules[(0, p_2_shape)] = p_3_shape
    p_2_shape.transformation_rules[(0, p_2_shape)] = p_3_shape

    p_0_shape.transformation_rules[(0, p_3_shape)] = p_4_shape
    p_1_shape.transformation_rules[(0, p_3_shape)] = p_4_shape
    p_2_shape.transformation_rules[(0, p_3_shape)] = p_4_shape
    p_3_shape.transformation_rules[(0, p_3_shape)] = p_4_shape
Exemplo n.º 3
0
def cons(t, *children):
    ch = list(children)
    return w_constructor(tag(t, len(ch)), ch)
Exemplo n.º 4
0
def is_nil(constructor):
    return isinstance(
        constructor, W_Constructor) and constructor.get_tag() is tag("nil", 0)
Exemplo n.º 5
0
def nil():
    return w_constructor(tag("nil", 0), [])
Exemplo n.º 6
0
def p_(x):
    from theseus.model import w_constructor
    return w_constructor(tag("p", 1), [e(x)])
Exemplo n.º 7
0
def _p(x):
    from theseus.pattern import ConstructorPattern
    return ConstructorPattern(tag("p", 1), [pp(x)])