Exemplo n.º 1
0
def checkOr(s_exp):
    if isinstance(s_exp,sexprs.Pair):
        if isinstance(s_exp.second,sexprs.Nil):
            return AbstractSchemeExpr.parse_after_reader(s_exp.first)
    else:
        return AbstractSchemeExpr.parse_after_reader(sexprs.false())
    return Or(s_exp)
Exemplo n.º 2
0
def andToIf(s_exp):
    if isinstance(s_exp,sexprs.Nil):
        return sexprs.true()
    if isinstance(s_exp,sexprs.Pair):
        if isinstance(s_exp.second,sexprs.Nil):
            return s_exp.first
    return sexprs.Pair(sexprs.Symbol("IF"),sexprs.Pair(s_exp.first,sexprs.Pair(
        sexprs.Pair(sexprs.Symbol("AND"),s_exp.second)
        ,sexprs.Pair(sexprs.false(),sexprs.Nil()))))
Exemplo n.º 3
0
                    .catens(3) \
                    .done()

p_skip = ps.parser(pc.pcWhite1) \
        .parser(p_line_comment) \
        .parser(pSexpr_comment) \
        .disjs(3) \
        .star() \
        .done()

true_p = ps.parser(pc.pcWordCI('#t')) \
                .pack(lambda m: sexprs.true()) \
                .done()

false_p = ps.parser(pc.pcWordCI('#f')) \
                .pack(lambda m: sexprs.false()) \
                .done()

boolean_p = ps.parser(true_p) \
            .parser(false_p) \
            .disj() \
            .done()

nat_p = ps.parser(pc.const(lambda x: x=='+')) \
        .parser(pc.plus(pc.pcOneOf('0123456789'))) \
        .caten() \
        .pack(lambda m: sexprs.Integer(int(m[0]+"".join(m[1])))) \
        .parser(pc.plus(pc.pcOneOf('0123456789'))) \
        .pack(lambda m: sexprs.Integer(int("".join(m)))) \
        .disj() \
        .done()
Exemplo n.º 4
0
                    .catens(3) \
                    .done()

p_skip = ps.parser(pc.pcWhite1) \
        .parser(p_line_comment) \
        .parser(pSexpr_comment) \
        .disjs(3) \
        .star() \
        .done()

true_p = ps.parser(pc.pcWordCI('#t')) \
                .pack(lambda m: sexprs.true()) \
                .done()

false_p = ps.parser(pc.pcWordCI('#f')) \
                .pack(lambda m: sexprs.false()) \
                .done()

boolean_p = ps.parser(true_p) \
            .parser(false_p) \
            .disj() \
            .done()

nat_p = ps.parser(pc.const(lambda x: x=='+')) \
        .parser(pc.plus(pc.pcOneOf('0123456789'))) \
        .caten() \
        .pack(lambda m: sexprs.Integer(int(m[0]+"".join(m[1])))) \
        .parser(pc.plus(pc.pcOneOf('0123456789'))) \
        .pack(lambda m: sexprs.Integer(int("".join(m)))) \
        .disj() \
        .done()