コード例 #1
0
ファイル: testparser.py プロジェクト: chaosim/dao
 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)    
コード例 #2
0
ファイル: testparser.py プロジェクト: hermetique/dao
 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)
コード例 #3
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def test_let3(self):
     x, y = Const('x'), Const('y')
     eq_(eval(let([(x, 1), (y, 2)], add(x, y))), 3)
コード例 #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))
コード例 #5
0
ファイル: testgencode.py プロジェクト: chaosim/dao
 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)
コード例 #6
0
ファイル: testeval.py プロジェクト: hermetique/dao
 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)
コード例 #7
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testeval4(self):
     x = Const('x')
     eq_(eval(let([(x, quote(add(1, 1)))], eval_(x))), 2)
コード例 #8
0
ファイル: testeval.py プロジェクト: hermetique/dao
 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)
コード例 #9
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testdouble5(self):
     f = Var('f')
     x = Var('x')
     assert_raises(TypeError, eval,
                   let([(f, rules([[x], add(x, x)]))], f(1, 2)))  # passed
コード例 #10
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def test_let3(self):
   x, y = Const('x'), Const('y')
   eq_(eval(let([(x,1), (y,2)], add(x, y))), 3)
コード例 #11
0
ファイル: testeval.py プロジェクト: chaosim/dao
 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)
コード例 #12
0
ファイル: testoptimize.py プロジェクト: hermetique/dao
 def test_add(self):
     result = compile_optimize(add(1, 2))
     expect = il.Integer(3)
     eq_(result, expect)
コード例 #13
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def test_lamda2(self):
   x, y = Const('x'), Const('y')
   eq_(eval(lamda((x, y), add(x, y))(1, 3)), 4)
コード例 #14
0
 def test_too_many_unquote(self):
     assert_raises(DaoSyntaxError, eval, qq(uq(uq(add(1, 1)))))
コード例 #15
0
 def test_unquote_slice(self):
     eq_(eval(qq(add(uqs(quote((3, 4)))))), add(3, 4))
コード例 #16
0
 def test_unquote_add(self):
     eq_(eval(qq(uq(add(1, 1)))), 2)
コード例 #17
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testletdouble(self):
     x, f = Const('x'), Const('f')
     eq_(eval(let([(f, lamda([x], add(x, x)))], f(1))), 2)
コード例 #18
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testletdouble(self):
   x, f = Const('x'), Const('f')
   eq_(eval(let([(f, lamda([x], add(x, x)))], f(1))), 2)
コード例 #19
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testletdouble1(self):
     x, f = Var('x'), MacroVar('f')
     eq_(eval(let([(f, macro([x], add(x, x)))], f(1))), 2)
コード例 #20
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def test_macro2(self):
   x, y = Var('x'), Var('y')
   eq_(eval(macro((x, y), add(x, y))(1, 3)), 4)
コード例 #21
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testdouble2(self):
     x = Var('x')
     eq_(eval(rules([[x], x])(add(2, 2))), 4)
コード例 #22
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testletdouble1(self):
   x, f = Var('x'), MacroVar('f')
   eq_(eval(let([(f, macro([x], add(x, x)))], f(1))), 2)
コード例 #23
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def test4(self):
     x = Var('x')
     eq_(eval(macrorules([[x], prin(x)])(add(1, 1))), None)
コード例 #24
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testletdouble2(self):
   x, f = Const('x'), ConstMacroVar('f')
   eq_(eval(let([(f, macro([x], add(x, x)))], f(1))), 2)
コード例 #25
0
ファイル: testeval.py プロジェクト: hermetique/dao
 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)
コード例 #26
0
ファイル: testeval.py プロジェクト: chaosim/dao
 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)
コード例 #27
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def test_callcc(self):
     k = Var('k')
     eq_(eval(add(callcc(lamda((k, ), k(1))), 2)), 3)
コード例 #28
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testdouble1(self):
   x = Var('x')
   eq_(eval(rules([[x], add(x, x)])(2)), 4)
コード例 #29
0
ファイル: testbuiltin.py プロジェクト: chaosim/dao
 def test_unquote_slice(self):
   eq_(eval(qq(add(uqs(quote((3,4)))))), add(3, 4))
コード例 #30
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testdouble2(self):
   x = Var('x')
   eq_(eval(rules([[x], x])(add(2, 2))), 4)
コード例 #31
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def test_lamda2(self):
     x, y = Const('x'), Const('y')
     eq_(eval(lamda((x, y), add(x, y))(1, 3)), 4)
コード例 #32
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testdouble4(self):
   f = Var('f')
   x = Var('x')
   eq_(eval(let([(f, rules([[x], add(x, x)]))], f(f(1)))), 4) 
コード例 #33
0
ファイル: testeval.py プロジェクト: hermetique/dao
 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)
コード例 #34
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testdouble5(self):
   f = Var('f')
   x = Var('x')
   assert_raises(TypeError, eval, let([(f, rules([[x], add(x, x)]))], f(1, 2))) # passed
コード例 #35
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def test_macro2(self):
     x, y = Var('x'), Var('y')
     eq_(eval(macro((x, y), add(x, y))(1, 3)), 4)
コード例 #36
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def test3(self):
   x = Var('x')
   eq_(eval(macrorules([[x], add(x, x)])(1)), 2) 
コード例 #37
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testletdouble2(self):
     x, f = Const('x'), ConstMacroVar('f')
     eq_(eval(let([(f, macro([x], add(x, x)))], f(1))), 2)
コード例 #38
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def test4(self):
   x = Var('x')
   eq_(eval(macrorules([[x], prin(x)])(add(1, 1))), None) 
コード例 #39
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testdouble1(self):
     x = Var('x')
     eq_(eval(rules([[x], add(x, x)])(2)), 4)
コード例 #40
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def test5(self):
   x = Var('x')
   y = Var('y')
   eq_(eval(let([(y, 1)], macrorules([[x], prin(x)])(add(y, 1)))), None) 
コード例 #41
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testdouble4(self):
     f = Var('f')
     x = Var('x')
     eq_(eval(let([(f, rules([[x], add(x, x)]))], f(f(1)))), 4)
コード例 #42
0
ファイル: testeval.py プロジェクト: chaosim/dao
 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) 
コード例 #43
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def test3(self):
     x = Var('x')
     eq_(eval(macrorules([[x], add(x, x)])(1)), 2)
コード例 #44
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def test_closure2(self):
   x, f = Const('x'), Const('f')
   eq_(eval(let([(f, macrorules([[x], x])),
                 (x, 1)],
            f(add(x,x)))), 2)
コード例 #45
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def test5(self):
     x = Var('x')
     y = Var('y')
     eq_(eval(let([(y, 1)], macrorules([[x], prin(x)])(add(y, 1)))), None)
コード例 #46
0
ファイル: testeval.py プロジェクト: chaosim/dao
 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) 
コード例 #47
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def test_closure2(self):
     x, f = Const('x'), Const('f')
     eq_(eval(let([(f, macrorules([[x], x])), (x, 1)], f(add(x, x)))), 2)
コード例 #48
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testeval5(self):
   eq_(eval(eval_(quote(begin(1, 2)))), 2)
   eq_(eval(eval_(quote(begin(1, add(1, 2))))), 3)
コード例 #49
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testeval5(self):
     eq_(eval(eval_(quote(begin(1, 2)))), 2)
     eq_(eval(eval_(quote(begin(1, add(1, 2))))), 3)
コード例 #50
0
ファイル: testcpsconvert.py プロジェクト: chaosim/dao
 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)
コード例 #51
0
ファイル: testeval.py プロジェクト: hermetique/dao
 def testeval1(self):
     eq_(eval(eval_(quote(add(1, 1)))), (2))
コード例 #52
0
ファイル: testbuiltin.py プロジェクト: chaosim/dao
 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))
コード例 #53
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testeval4(self):
   x = Const('x')
   eq_(eval(let([(x, quote(add(1,1)))], eval_(x))), 2)
コード例 #54
0
ファイル: testoptimize.py プロジェクト: chaosim/dao
 def test_add(self):
   result = compile_optimize(add(1, 2))
   expect = il.Integer(3)
   eq_(result, expect)
コード例 #55
0
ファイル: testcpsconvert.py プロジェクト: hermetique/dao
 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)
コード例 #56
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def testeval1(self):
   eq_(eval(eval_(quote(add(1, 1)))), (2))
コード例 #57
0
ファイル: testbuiltin.py プロジェクト: chaosim/dao
 def test_unquote_add(self):
   eq_(eval(qq(uq(add(1,1)))), 2)
コード例 #58
0
ファイル: testeval.py プロジェクト: chaosim/dao
 def test_callcc(self):
   k = Var('k')
   eq_(eval(add(callcc(lamda((k,), k(1))),2)), 3)
コード例 #59
0
ファイル: testbuiltin.py プロジェクト: chaosim/dao
 def test_too_many_unquote(self):
   assert_raises(DaoSyntaxError, eval, qq(uq(uq(add(1,1)))))
コード例 #60
0
ファイル: testgencode.py プロジェクト: hermetique/dao
 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)