Esempio n. 1
0
def expand_clauses(clauses):
    if clauses is EmptyList:
        return Boolean(False)

    first = car(clauses)
    rest = cdr(clauses)

    if is_cond_else_clause(first):
        if rest is EmptyList:
            return sequence_expr(cond_actions(first))
        else:
            raise ValueError('ELSE caluse isn\'t last: %s' % clauses)
    else:
        return make_if(cond_predicate(first), 
                sequence_expr(cond_actions(first)), expand_clauses(rest))
Esempio n. 2
0
def rest_operands(ops):
    return cdr(ops)
Esempio n. 3
0
def operands(expr):
    return cdr(expr)
Esempio n. 4
0
def rest_exprs(seq):
    return cdr(seq)
Esempio n. 5
0
def is_last_expr(seq):
    return cdr(seq) is EmptyList
Esempio n. 6
0
def begin_actions(expr):
    return cdr(expr)
Esempio n. 7
0
 def inner(arg, count):
     if arg is EmptyList:
         return count
     return inner(cdr(arg), count + 1)
Esempio n. 8
0
def cond_clauses(expr):
    return cdr(expr)
Esempio n. 9
0
def cond_actions(clause):
    return cdr(clause)
Esempio n. 10
0
 def inner(expr):
     if expr is EmptyList:
         return EmptyList
     return cons(cadar(expr), inner(cdr(expr)))
Esempio n. 11
0
 def inner(arg, count):
     if arg is EmptyList:
         return count
     return inner(cdr(arg), count + 1)
Esempio n. 12
0
def rest_exprs(seq):
    return cdr(seq)
Esempio n. 13
0
def is_last_expr(seq):
    return cdr(seq) is EmptyList
Esempio n. 14
0
def begin_actions(expr):
    return cdr(expr)