Exemplo n.º 1
0
 def testIndentUndent(self):
   _, n, s, line = DummyVar('_'), Var('n'), Var('s'), Var('line')
   space = char(' ')
   ruleList = [(s,function( ((n,), some(line(n)),s(add(n,1))),
                           ((n,), some(line(n))))),
               (line,function( ((n,), times(space, n),some(letter(_)),any(space),char('\n'))))
               ]
   eq_(eval(letr(ruleList, parse_text(s(0),  'a\n b\n c\n'))), True)
   eq_(eval(letr(ruleList, parse_text(s(0),  'asd\n bdf\n cdfh\n'))), True)    
Exemplo n.º 2
0
 def testIndentUndent(self):
     _, n, s, line = DummyVar('_'), Var('n'), Var('s'), Var('line')
     space = char(' ')
     ruleList = [(s,
                  function(((n, ), some(line(n)), s(add(n, 1))),
                           ((n, ), some(line(n))))),
                 (line,
                  function(((n, ), times(space, n), some(letter(_)),
                            any(space), char('\n'))))]
     eq_(eval(letr(ruleList, parse_text(s(0), 'a\n b\n c\n'))), True)
     eq_(eval(letr(ruleList, parse_text(s(0), 'asd\n bdf\n cdfh\n'))), True)
Exemplo n.º 3
0
 def test_let3(self):
     x, y = Const('x'), Const('y')
     eq_(eval(let([(x, 1), (y, 2)], add(x, y))), 3)
Exemplo n.º 4
0
 def test_tuple1(self):
     eq_(eval(qq((1, ))), (1, ))
     eq_(eval(qq((1, 2))), (1, 2))
     eq_(eval(qq((add(1, 1), 2))), (add(1, 1), 2))
Exemplo n.º 5
0
 def test_add(self):
   result = compile(add(1, 2))
   #expect ='(lambda a0: (lambda a1: (lambda v: v)(a0+a1))(2))(1)'
   expect = '3'
   eq_(result, expect)
Exemplo n.º 6
0
 def test_closure1(self):
     x, f = Const('x'), Const('f')
     eq_(eval(let([(f, macrorules([[x], prin(x)])), (x, 1)], f(add(x, x)))),
         None)
Exemplo n.º 7
0
 def testeval4(self):
     x = Const('x')
     eq_(eval(let([(x, quote(add(1, 1)))], eval_(x))), 2)
Exemplo n.º 8
0
 def test_arithmetic(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.º 9
0
 def testdouble5(self):
     f = Var('f')
     x = Var('x')
     assert_raises(TypeError, eval,
                   let([(f, rules([[x], add(x, x)]))], f(1, 2)))  # passed
Exemplo n.º 10
0
 def test_let3(self):
   x, y = Const('x'), Const('y')
   eq_(eval(let([(x,1), (y,2)], add(x, y))), 3)
Exemplo n.º 11
0
 def test_letrec(self):
   x, y = Const('x'), Const('y')
   eq_(eval(letrec([(x, 1), (y, x)], y)), 1)
   eq_(eval(letrec([(x, 1), (y, add(x, 1))], y)), 2)
Exemplo n.º 12
0
 def test_add(self):
     result = compile_optimize(add(1, 2))
     expect = il.Integer(3)
     eq_(result, expect)
Exemplo n.º 13
0
 def test_lamda2(self):
   x, y = Const('x'), Const('y')
   eq_(eval(lamda((x, y), add(x, y))(1, 3)), 4)
Exemplo n.º 14
0
 def test_too_many_unquote(self):
     assert_raises(DaoSyntaxError, eval, qq(uq(uq(add(1, 1)))))
Exemplo n.º 15
0
 def test_unquote_slice(self):
     eq_(eval(qq(add(uqs(quote((3, 4)))))), add(3, 4))
Exemplo n.º 16
0
 def test_unquote_add(self):
     eq_(eval(qq(uq(add(1, 1)))), 2)
Exemplo n.º 17
0
 def testletdouble(self):
     x, f = Const('x'), Const('f')
     eq_(eval(let([(f, lamda([x], add(x, x)))], f(1))), 2)
Exemplo n.º 18
0
 def testletdouble(self):
   x, f = Const('x'), Const('f')
   eq_(eval(let([(f, lamda([x], add(x, x)))], f(1))), 2)
Exemplo n.º 19
0
 def testletdouble1(self):
     x, f = Var('x'), MacroVar('f')
     eq_(eval(let([(f, macro([x], add(x, x)))], f(1))), 2)
Exemplo n.º 20
0
 def test_macro2(self):
   x, y = Var('x'), Var('y')
   eq_(eval(macro((x, y), add(x, y))(1, 3)), 4)
Exemplo n.º 21
0
 def testdouble2(self):
     x = Var('x')
     eq_(eval(rules([[x], x])(add(2, 2))), 4)
Exemplo n.º 22
0
 def testletdouble1(self):
   x, f = Var('x'), MacroVar('f')
   eq_(eval(let([(f, macro([x], add(x, x)))], f(1))), 2)
Exemplo n.º 23
0
 def test4(self):
     x = Var('x')
     eq_(eval(macrorules([[x], prin(x)])(add(1, 1))), None)
Exemplo n.º 24
0
 def testletdouble2(self):
   x, f = Const('x'), ConstMacroVar('f')
   eq_(eval(let([(f, macro([x], add(x, x)))], f(1))), 2)
Exemplo n.º 25
0
 def test_closure3(self):
     x, y, f = Const('x'), Const('y'), Const('f')
     eq_(
         eval(
             let([(f, macrorules([[x, y], begin(x, y)])), (x, 1)],
                 f(prin(x), prin(add(x, x))))), None)
Exemplo n.º 26
0
 def test_arithmetic(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.º 27
0
 def test_callcc(self):
     k = Var('k')
     eq_(eval(add(callcc(lamda((k, ), k(1))), 2)), 3)
Exemplo n.º 28
0
 def testdouble1(self):
   x = Var('x')
   eq_(eval(rules([[x], add(x, x)])(2)), 4)
Exemplo n.º 29
0
 def test_unquote_slice(self):
   eq_(eval(qq(add(uqs(quote((3,4)))))), add(3, 4))
Exemplo n.º 30
0
 def testdouble2(self):
   x = Var('x')
   eq_(eval(rules([[x], x])(add(2, 2))), 4)
Exemplo n.º 31
0
 def test_lamda2(self):
     x, y = Const('x'), Const('y')
     eq_(eval(lamda((x, y), add(x, y))(1, 3)), 4)
Exemplo n.º 32
0
 def testdouble4(self):
   f = Var('f')
   x = Var('x')
   eq_(eval(let([(f, rules([[x], add(x, x)]))], f(f(1)))), 4) 
Exemplo n.º 33
0
 def test_letrec(self):
     x, y = Const('x'), Const('y')
     eq_(eval(letrec([(x, 1), (y, x)], y)), 1)
     eq_(eval(letrec([(x, 1), (y, add(x, 1))], y)), 2)
Exemplo n.º 34
0
 def testdouble5(self):
   f = Var('f')
   x = Var('x')
   assert_raises(TypeError, eval, let([(f, rules([[x], add(x, x)]))], f(1, 2))) # passed
Exemplo n.º 35
0
 def test_macro2(self):
     x, y = Var('x'), Var('y')
     eq_(eval(macro((x, y), add(x, y))(1, 3)), 4)
Exemplo n.º 36
0
 def test3(self):
   x = Var('x')
   eq_(eval(macrorules([[x], add(x, x)])(1)), 2) 
Exemplo n.º 37
0
 def testletdouble2(self):
     x, f = Const('x'), ConstMacroVar('f')
     eq_(eval(let([(f, macro([x], add(x, x)))], f(1))), 2)
Exemplo n.º 38
0
 def test4(self):
   x = Var('x')
   eq_(eval(macrorules([[x], prin(x)])(add(1, 1))), None) 
Exemplo n.º 39
0
 def testdouble1(self):
     x = Var('x')
     eq_(eval(rules([[x], add(x, x)])(2)), 4)
Exemplo n.º 40
0
 def test5(self):
   x = Var('x')
   y = Var('y')
   eq_(eval(let([(y, 1)], macrorules([[x], prin(x)])(add(y, 1)))), None) 
Exemplo n.º 41
0
 def testdouble4(self):
     f = Var('f')
     x = Var('x')
     eq_(eval(let([(f, rules([[x], add(x, x)]))], f(f(1)))), 4)
Exemplo n.º 42
0
 def test_closure1(self):
   x, f = Const('x'), Const('f')
   eq_(eval(let([(f, macrorules([[x], prin(x)])),
                 (x, 1)],
            f(add(x,x)))), None) 
Exemplo n.º 43
0
 def test3(self):
     x = Var('x')
     eq_(eval(macrorules([[x], add(x, x)])(1)), 2)
Exemplo n.º 44
0
 def test_closure2(self):
   x, f = Const('x'), Const('f')
   eq_(eval(let([(f, macrorules([[x], x])),
                 (x, 1)],
            f(add(x,x)))), 2)
Exemplo n.º 45
0
 def test5(self):
     x = Var('x')
     y = Var('y')
     eq_(eval(let([(y, 1)], macrorules([[x], prin(x)])(add(y, 1)))), None)
Exemplo n.º 46
0
 def test_closure3(self):
   x, y, f = Const('x'), Const('y'), Const('f')
   eq_(eval(let([(f, macrorules([[x, y], begin(x, y)])),
                 (x, 1)],
            f(prin(x), prin(add(x,x))))), None) 
Exemplo n.º 47
0
 def test_closure2(self):
     x, f = Const('x'), Const('f')
     eq_(eval(let([(f, macrorules([[x], x])), (x, 1)], f(add(x, x)))), 2)
Exemplo n.º 48
0
 def testeval5(self):
   eq_(eval(eval_(quote(begin(1, 2)))), 2)
   eq_(eval(eval_(quote(begin(1, add(1, 2))))), 3)
Exemplo n.º 49
0
 def testeval5(self):
     eq_(eval(eval_(quote(begin(1, 2)))), 2)
     eq_(eval(eval_(quote(begin(1, add(1, 2))))), 3)
Exemplo n.º 50
0
 def test_add(self):
   result = cps(add(1, 2))
   expect = il.Clamda(a0, il.Clamda(a1, done()(il.add((a0, a1))))(2))(1)
   eq_(result, expect)
Exemplo n.º 51
0
 def testeval1(self):
     eq_(eval(eval_(quote(add(1, 1)))), (2))
Exemplo n.º 52
0
 def test_tuple1(self):
   eq_(eval(qq((1,))), (1,))
   eq_(eval(qq((1,2))), (1,2))
   eq_(eval(qq((add(1,1),2))), (add(1,1),2))
Exemplo n.º 53
0
 def testeval4(self):
   x = Const('x')
   eq_(eval(let([(x, quote(add(1,1)))], eval_(x))), 2)
Exemplo n.º 54
0
 def test_add(self):
   result = compile_optimize(add(1, 2))
   expect = il.Integer(3)
   eq_(result, expect)
Exemplo n.º 55
0
 def test_add(self):
     result = cps(add(1, 2))
     expect = il.Clamda(a0, il.Clamda(a1, done()(il.add((a0, a1))))(2))(1)
     eq_(result, expect)
Exemplo n.º 56
0
 def testeval1(self):
   eq_(eval(eval_(quote(add(1, 1)))), (2))
Exemplo n.º 57
0
 def test_unquote_add(self):
   eq_(eval(qq(uq(add(1,1)))), 2)
Exemplo n.º 58
0
 def test_callcc(self):
   k = Var('k')
   eq_(eval(add(callcc(lamda((k,), k(1))),2)), 3)
Exemplo n.º 59
0
 def test_too_many_unquote(self):
   assert_raises(DaoSyntaxError, eval, qq(uq(uq(add(1,1)))))
Exemplo n.º 60
0
 def test_add(self):
     result = compile(add(1, 2))
     #expect ='(lambda a0: (lambda a1: (lambda v: v)(a0+a1))(2))(1)'
     expect = '3'
     eq_(result, expect)