コード例 #1
0
ファイル: classic_utils.py プロジェクト: chaosim/dao
def make_break(label, level, word1, word2, value): 
  if isinstance(label, Var):
    control_type = ''
    if not isinstance(word1, Var):
      control_type = word1
      if not isinstance(word2, Var):
        control_type += ' '+ word2
    if isinstance(level, Var): 
      level = 1
    label = label_stack_dict[control_type][-level]
  if isinstance(value, Var): value = None
  return exit_block(label, value)
コード例 #2
0
ファイル: testeval.py プロジェクト: charyorde/dao
 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)
コード例 #3
0
ファイル: testeval.py プロジェクト: charyorde/dao
 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)
コード例 #4
0
ファイル: testeval.py プロジェクト: charyorde/dao
 def test_unwind_protect2(self):
   eq_(eval(block('foo', unwind_protect(exit_block('foo', 1), 
                           prin(2), prin(3)))), 1)
コード例 #5
0
ファイル: testeval.py プロジェクト: charyorde/dao
 def testblock2(self):
   eq_(eval(block('a', exit_block('a', 2), 3)), 2)
コード例 #6
0
ファイル: testeval.py プロジェクト: charyorde/dao
 def testblock(self):
   f = Var('f')
   eq_(eval(block('foo', let([(f, lambda_((), exit_block('foo',1)))], 
                           mul(2,block('foo', f()))))), 
       1)
コード例 #7
0
ファイル: testparse.py プロジェクト: charyorde/dao
 def test_loop1(self):
     eq_(tag_loop_label(LoopForm((1, 2, exit()))), block("$1", 1, 2, exit_block("$1"), continue_block("$1")))