Exemplo n.º 1
0
 def testLoopWhen(self):
   eq_(eval(tag_loop_label(let([(i,3)], LoopWhenForm((set(i, sub(i, 1)), prin(i)), 
                                    gt(i,0))))), None)
Exemplo n.º 2
0
 def testLoopUntil(self):
   eq_(eval(tag_loop_label(let([(i,3)], LoopUntilForm((set(i, sub(i, 1)), prin(i)), 
                                    eq(i,0))))), None)
Exemplo n.º 3
0
 def test_unwind_protect_loop(self):
   eq_(eval(let([(i,3)], 
                block(a, set(i, sub(i, 1)), 
                           if_(eq(i, 0), exit_block(a, 1)),
                           unwind_protect(continue_block(a), prin(2))), i)), 0)
Exemplo n.º 4
0
 def testLoopTimes(self):
   eq_(eval(tag_loop_label(let([(i,3)], LoopTimesForm(3, (set(i, sub(i, 1)), prin(i)))))), None)
Exemplo n.º 5
0
 def testArithmetic(self):
   eq_(eval(add(1, 2)), 3) 
   eq_(eval(sub(1, 1)), 0)
   eq_(eval(mul(2, 2)), 4)
   eq_(eval(div(2, 2)), 1)
Exemplo n.º 6
0
 def testloop(self):
   eq_(eval(let([(i,3)], 
                block(a, set(i, sub(i, 1)), 
                           if_(eq(i, 0), exit_block(a, 1)),
                           continue_block(a)), i)), 0)
Exemplo n.º 7
0
 def testletroddeven(self):
   eq_(eval(letr([(odd, lambda_([n], if_(eq(n,0), 0, even(sub(n,1))))),
                   (even, lambda_([n], if_(eq(n,0), 1, odd(sub(n, 1)))))],
                 odd(3))), 1)
Exemplo n.º 8
0
 def testletrfac(self):
   eq_(eval(letr([(fac, lambda_([n], if_(eq(n,1), 1, mul(n, fac(sub(n, 1))))))],
                 fac(3))), 6)
Exemplo n.º 9
0
 def testletr(self):
   eq_(eval(letr([(f, lambda_([n], if_(eq(n, 1), 1, f(sub(n, 1)))))],
                 f(2))), 1)
Exemplo n.º 10
0
 def ___parse___(self, parser): 
   if isinstance(self.x, _Unary) and isinstance(self.x.x, _VarSymbol):
     x = varcache(self.x.x.name)
     return special.set(x, arith.sub(x, 1))
   else: return arith.neg(parser.parse(self.x))
Exemplo n.º 11
0
 def ___parse___(self, parser): 
   if isinstance(self.x, _Unary) and isinstance(self.x.x, _VarSymbol):
     x = varcache(self.x.x.name)
     return special.set(x, arith.sub(x, 1))
   else: return arith.neg(parser.parse(self.x))