예제 #1
0
 def test_some(self):
     X, Y = Var('X'), Var('Y')
     eq_(eval(begin(parse_text(some(char(X), X, Y), '222'), Y)),
         ['2', '2', '2'])
     eq_(eval(begin(parse_text(some(char(X), X, Y), '234'), Y)), ['2'])
     assert_raises(NoSolutionFound, eval,
                   begin(parse_text(some(char(X), X, Y), ''), Y))
예제 #2
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_dummy_times_between(self):
   _, Y = DummyVar('_'), Var('Y')
   eq_(eval(begin(parse_text(times_between(char(_), 2, 3, _, Y), '234'), Y)), ['2','3', '4'])
   eq_(eval(begin(parse_text(times_between(char(_), 2, 3, _, Y), '23'), Y)), ['2','3'])
   eq_(eval(begin(parse_text(times_between(char(_), 2, 3, _, Y), '2345'), Y)), ['2','3', '4'])
   assert_raises(NoSolutionFound, eval, begin(parse_text(times_between(char(_), 2, 3, _, Y), '2'), Y))
   assert_raises(NoSolutionFound, eval, begin(parse_text((and_p, times_between(char(_), 2, 3, _, Y), eoi), '2345'), Y))
예제 #3
0
 def test_dummy_any(self):
     _, Y = DummyVar('_'), Var('Y')
     eq_(eval(begin(parse_text(any(char(_), _, Y), '222'), Y)),
         ['2', '2', '2'])
     eq_(eval(begin(parse_text(any(char(_), _, Y), '234'), Y)),
         ['2', '3', '4'])
     eq_(eval(begin(parse_text(any(char(_), _, Y), ''), Y)), [])
예제 #4
0
 def test_dummy_times_more(self):
     _, Y = DummyVar('_'), Var('Y')
     eq_(eval(begin(parse_text((times_more, char(_), 3, _, Y), '234'), Y)),
         ['2', '3', '4'])
     eq_(eval(begin(parse_text((times_more, char(_), 3, _, Y), '2345'), Y)),
         ['2', '3', '4', '5'])
     assert_raises(NoSolutionFound, eval,
                   begin(parse_text(times_more(char(_), 3, _, Y), '23'), Y))
예제 #5
0
 def test_times_a2(self):
     X, Y, S = Var('X'), Var('Y'), Var('S')
     function1 = function(((Y, ), times(char('a'), 2, 'a', Y)))
     eq_(eval(begin(parse_text(function1(X), 'aa'), X)), ['a', 'a'])
     assert_raises(NoSolutionFound, eval,
                   begin(parse_text(function1(X), 'a'), X))
     assert_raises(NoSolutionFound, eval,
                   begin(parse_text(and_p(function1(X), eoi), 'aaa'), X))
예제 #6
0
 def test_dumy_some(self):
     _, Y = DummyVar('_'), Var('Y')
     eq_(eval(begin(parse_text(some(char(_), _, Y), '222'), Y)),
         ['2', '2', '2'])
     eq_(eval(begin(parse_text(some(char(_), _, Y), '234'), Y)),
         ['2', '3', '4'])
     assert_raises(NoSolutionFound, eval,
                   begin(parse_text(some(char(_), _, Y), ''), Y))
예제 #7
0
 def test_dummy_seplist(self):
     _, Y = DummyVar('_'), Var('Y')
     eq_(
         eval(
             begin(parse_text(seplist(char(_), char(','), _, Y), '2,2,2'),
                   Y)), ['2', '2', '2'])
     eq_(
         eval(
             begin(parse_text(seplist(char(_), char(','), _, Y), '2,3,4'),
                   Y)), ['2', '3', '4'])
     eq_(eval(begin(parse_text(seplist(char(_), char(','), _, Y), '2'), Y)),
         ['2'])
예제 #8
0
 def test_seplist(self):
     X, Y = Var('X'), Var('Y')
     eq_(
         eval(
             begin(parse_text(seplist(char(X), char(','), X, Y), '2,2,2'),
                   Y)), ['2', '2', '2'])
     eq_(
         eval(
             begin(parse_text(seplist(char(X), char(','), X, Y), '2,3,4'),
                   Y)), ['2'])
     eq_(eval(begin(parse_text(seplist(char(X), char(','), X, Y), '2'), Y)),
         ['2'])
     eq_(eval(begin(parse_text(seplist(char(X), char(','), X, Y), ''), Y)),
         [])
예제 #9
0
 def test_any_some(self):
     X, Y = Var('X'), Var('Y')
     eq_(
         eval(
             begin(
                 parse_text(
                     char(X) + any(~char('b') + some(char(X))) + eoi,
                     'abaaaa'), X)), 'a')
예제 #10
0
 def test_dummy_times_less(self):
     _, Y = DummyVar('_'), Var('Y')
     eq_(
         eval(
             preparse(
                 begin(
                     parse_text(
                         times_less(char(_), 3, _, Y) + char('4'), '234'),
                     Y))), ['2', '3'])
     eq_(eval(begin(parse_text(times_less(char(_), 3, _, Y), '234'), Y)),
         ['2', '3', '4'])
     eq_(eval(begin(parse_text(times_less(char(_), 3, _, Y), '23'), Y)),
         ['2', '3'])
     assert_raises(
         NoSolutionFound, eval,
         preparse(
             begin(parse_text(times_less(char(_), 3, _, Y) + eoi, '2345'),
                   Y)))
예제 #11
0
 def test_dummy_times_less_lazy(self):
     _, Y = DummyVar('_'), Var('Y')
     eq_(
         eval(
             preparse(
                 begin(
                     parse_text(
                         times_less(char(_), 3, _, Y, lazy) + char('4'),
                         '234'), Y))), ['2', '3'])
예제 #12
0
파일: testeval.py 프로젝트: charyorde/dao
 def test_cut2_no_Cut3_begin(self):
   a, b, c, d, x = Var('a'), Var('b'), Var('c'), Var('d'), Var('x')
   eq_(eval(letr([(a, function([[x], begin(b(x),c(x))],
                                [[x], d(x)])),
                    (b, function([[1], 'b1'],
                                [[4], 'b4'])),
                    (c, function([[4], 'c4'])),
                    (d, function([[3], 'd3']))],
            a(x), x)), 4) 
예제 #13
0
def make_expression(text):
  code = begin(
    sexpression_defines, 
    classic_defines, 
    set_text(text),
    from_(classic, program)(exp), 
    eoi,
    eval_(pycall(cons2tuple, exp)))
  return to_sexpression(code)
예제 #14
0
파일: dinpy.py 프로젝트: charyorde/dao
def make_fun6(name, rules, klass): 
  fun = varcache(name)
  rules = preparse(rules)
  if isinstance(rules, AtForm): 
    clauses = [(head if head is not None else (), bodies) 
              for head, bodies in rules.clauses]
    return special.begin(*[insert_def(fun, head, bodies, klass) 
                         for head, bodies in clauses])
  elif isinstance(rules, list):
    return insert_def(fun, head, [rules], klass) 
  else: raise DinpySyntaxError()
예제 #15
0
파일: dinpy.py 프로젝트: charyorde/dao
def make_fun1(name, rules, klass):
  fun = varcache(name)
  if len(rules)==0:
    return replace_def(fun, (), [[]], klass)
  if len(rules)==1:
    return replace_def(fun, preparse(rules[0][0]), preparse(rules[0][1]), klass)
  replaces = []
  for head, bodies in rules:
    head = preparse(head)
    bodies = preparse(bodies)
    replaces .append(replace_def(fun, head, bodies, klass))
  return special.begin(*replaces)  
예제 #16
0
 def test_dummy_times_between(self):
     _, Y = DummyVar('_'), Var('Y')
     eq_(
         eval(
             begin(parse_text(times_between(char(_), 2, 3, _, Y), '234'),
                   Y)), ['2', '3', '4'])
     eq_(
         eval(begin(parse_text(times_between(char(_), 2, 3, _, Y), '23'),
                    Y)), ['2', '3'])
     eq_(
         eval(
             begin(parse_text(times_between(char(_), 2, 3, _, Y), '2345'),
                   Y)), ['2', '3', '4'])
     assert_raises(
         NoSolutionFound, eval,
         begin(parse_text(times_between(char(_), 2, 3, _, Y), '2'), Y))
     assert_raises(
         NoSolutionFound, eval,
         begin(
             parse_text((and_p, times_between(char(_), 2, 3, _, Y), eoi),
                        '2345'), Y))
예제 #17
0
파일: dinpy.py 프로젝트: hermetique/dao
def make_fun6(name, rules, klass):
    fun = varcache(name)
    rules = preparse(rules)
    if isinstance(rules, AtForm):
        clauses = [(head if head is not None else (), bodies)
                   for head, bodies in rules.clauses]
        return special.begin(
            *
            [insert_def(fun, head, bodies, klass) for head, bodies in clauses])
    elif isinstance(rules, list):
        return insert_def(fun, head, [rules], klass)
    else:
        raise DinpySyntaxError()
예제 #18
0
파일: dinpy.py 프로젝트: hermetique/dao
def make_fun1(name, rules, klass):
    fun = varcache(name)
    if len(rules) == 0:
        return replace_def(fun, (), [[]], klass)
    if len(rules) == 1:
        return replace_def(fun, preparse(rules[0][0]), preparse(rules[0][1]),
                           klass)
    replaces = []
    for head, bodies in rules:
        head = preparse(head)
        bodies = preparse(bodies)
        replaces.append(replace_def(fun, head, bodies, klass))
    return special.begin(*replaces)
예제 #19
0
파일: dexpr.py 프로젝트: hermetique/dao
 def ___parse___(self, parser):
   # x << y << z << value
   y = parser.parse(self.y)
   if isinstance(self.x, _VarSymbol):
     return special.set(varcache(self.x.name), y)
   if isinstance(self.x, _lshift): 
     vars = _get_assign_vars_chain(self.x)
     i = len(vars)-1
     set_stmts = [special.set(vars[i], y)]
     while i>0:
       i -= 1
       set_stmts.append(special.set(vars[i], vars[i+1]))
     return special.begin(*set_stmts)
   elif isinstance(self.x, tuple) or isinstance(self.x, list):
     vars = self.x
   elif isinstance(self.x, _div):
     vars = _get_assign_vars_list(self.x)
   else: raise DinpySyntaxError()
   return special.set_list(vars, y)
예제 #20
0
파일: dexpr.py 프로젝트: charyorde/dao
 def ___parse___(self, parser):
   # x << y << z << value
   y = parser.parse(self.y)
   if isinstance(self.x, _VarSymbol):
     return special.set(varcache(self.x.name), y)
   if isinstance(self.x, _lshift): 
     vars = _get_assign_vars_chain(self.x)
     i = len(vars)-1
     set_stmts = [special.set(vars[i], y)]
     while i>0:
       i -= 1
       set_stmts.append(special.set(vars[i], vars[i+1]))
     return special.begin(*set_stmts)
   elif isinstance(self.x, tuple) or isinstance(self.x, list):
     vars = self.x
   elif isinstance(self.x, _div):
     vars = _get_assign_vars_list(self.x)
   else: raise DinpySyntaxError()
   return special.set_list(vars, y)
예제 #21
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_next(self):
   eq_(eval(begin(set_text('ab'), next_char(), next_char())), 'a')
예제 #22
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_seplist(self):
   X, Y = Var('X'), Var('Y')
   eq_(eval(begin(parse_text(seplist(char(X), char(','), X, Y), '2,2,2'), Y)), ['2','2','2'])
   eq_(eval(begin(parse_text(seplist(char(X), char(','), X, Y), '2,3,4'), Y)), ['2'])
   eq_(eval(begin(parse_text(seplist(char(X), char(','), X, Y), '2'), Y)), ['2'])
   eq_(eval(begin(parse_text(seplist(char(X), char(','), X, Y), ''), Y)), [])
예제 #23
0
 def test_spaces(self):
     x, y = Var('x'), Var('y')
     eq_(eval(begin(parse_text(unify_tabspaces(x), ' '), x)), " ")
     eq_(eval(begin(parse_text(unify_whitespaces(y), "\r\t\n"), y)),
         "\r\t\n")
예제 #24
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_dummy_times_less(self):
   _, Y = DummyVar('_'), Var('Y')
   eq_(eval(preparse(begin(parse_text(times_less(char(_), 3, _, Y)+char('4'), '234'), Y))), ['2','3'])
   eq_(eval(begin(parse_text(times_less(char(_), 3, _, Y), '234'), Y)), ['2','3','4'])
   eq_(eval(begin(parse_text(times_less(char(_), 3, _, Y), '23'), Y)), ['2','3'])
   assert_raises(NoSolutionFound, eval, preparse(begin(parse_text(times_less(char(_), 3, _, Y)+eoi, '2345'), Y)))
예제 #25
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_dummy_times(self):
   _, Y = DummyVar('_'), Var('Y')
   eq_(eval(begin(parse_text(times(char(_), 3, _, Y), '234'), Y)), ['2','3','4'])
예제 #26
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_dumy_some(self):
   _, Y = DummyVar('_'), Var('Y')
   eq_(eval(begin(parse_text(some(char(_), _, Y), '222'), Y)), ['2','2','2'])
   eq_(eval(begin(parse_text(some(char(_), _, Y), '234'), Y)),['2', '3', '4'])
   assert_raises(NoSolutionFound, eval, begin(parse_text(some(char(_), _, Y), ''), Y))
예제 #27
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_dummy_any(self):
   _, Y = DummyVar('_'), Var('Y')
   eq_(eval(begin(parse_text(any(char(_), _, Y), '222'), Y)), ['2','2','2'])
   eq_(eval(begin(parse_text(any(char(_), _, Y), '234'), Y)), ['2', '3', '4'])
   eq_(eval(begin(parse_text(any(char(_), _, Y), ''), Y)), [])
예제 #28
0
 def test_next(self):
     eq_(eval(begin(set_text('ab'), next_char(), next_char())), 'a')
예제 #29
0
 def test_times_an(self):
     X, Y, S, n = Var('X'), Var('Y'), Var('S'), Var('n')
     function1 = function(((Y, ), times(char('a'), n, 'a', Y)))
     eq_(eval(begin(parse_text(function1(X), 'a'), X)), ['a'])
     eq_(eval(begin(parse_text(function1(X), 'aa'), X)), ['a', 'a'])
     eq_(eval(begin(parse_text(function1(X), 'aaa'), X)), ['a', 'a', 'a'])
예제 #30
0
 def test_string(self):
     x, y = Var('x'), Var('y')
     eq_(eval(begin(parse_text(dqstring(x), '"2"'), x)), "2")
     eq_(eval(begin(parse_text(sqstring(y), "'1'"), y)), "1")
예제 #31
0
 def test_step(self):
     eq_(eval(begin(set_text('ab'), step(), step())), 'b')
     eq_(eval(begin(set_text('ab'), step(), left())), 'b')
예제 #32
0
 def test_any(self):
     X, Y = Var('X'), Var('Y')
     eq_(eval(begin(parse_text(any(char(X), X, Y), '222'), Y)),
         ['2', '2', '2'])
     eq_(eval(begin(parse_text(any(char(X), X, Y), '234'), Y)), ['2'])
     eq_(eval(begin(parse_text(any(char(X), X, Y), ''), Y)), [])
예제 #33
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_position(self):
   eq_(eval(begin(set_text('ab'), position())), 0)
예제 #34
0
 def test_dummy_times(self):
     _, Y = DummyVar('_'), Var('Y')
     eq_(eval(begin(parse_text(times(char(_), 3, _, Y), '234'), Y)),
         ['2', '3', '4'])
예제 #35
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_skip(self):
   eq_(eval(begin(set_text('abcde'), skip(3), next())), 'd')
   eq_(eval(begin(set_text('abcde'), skip(4), skip(-2), next())), 'c')
예제 #36
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_some(self):
   X, Y = Var('X'), Var('Y')
   eq_(eval(begin(parse_text(some(char(X), X, Y), '222'), Y)), ['2','2','2'])
   eq_(eval(begin(parse_text(some(char(X), X, Y), '234'), Y)), ['2'])
   assert_raises(NoSolutionFound, eval, begin(parse_text(some(char(X), X, Y), ''), Y))
예제 #37
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_goto(self):
   eq_(eval(begin(set_text('abcde'), goto(1))), 'bcde')
예제 #38
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_times(self):
   X, Y = Var('X'), Var('Y')
   eq_(eval(begin(parse_text(times(char(X), 3, X, Y), '222'), Y)), ['2','2','2'])
   assert_raises(NoSolutionFound, eval, parse_text(times(char(X), 3, X, Y), '2234'))
예제 #39
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_string(self):
   x ,y  = Var('x'), Var('y')
   eq_(eval(begin(parse_text(dqstring(x), '"2"'), x)), "2")
   eq_(eval(begin(parse_text(sqstring(y), "'1'"), y)), "1")
예제 #40
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_dummy_times_more(self):
   _, Y = DummyVar('_'), Var('Y')
   eq_(eval(begin(parse_text((times_more,char(_), 3, _, Y), '234'), Y)), ['2','3','4'])
   eq_(eval(begin(parse_text((times_more,char(_), 3, _, Y), '2345'), Y)), ['2','3','4', '5'])
   assert_raises(NoSolutionFound, eval, begin(parse_text(times_more(char(_), 3, _, Y), '23'), Y))
예제 #41
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_step(self):
   eq_(eval(begin(set_text('ab'), step(), step())), 'b')
   eq_(eval(begin(set_text('ab'), step(), left())), 'b')
예제 #42
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_dummy_times_less_lazy(self):
   _, Y = DummyVar('_'), Var('Y')
   eq_(eval(preparse(begin(parse_text(times_less(char(_), 3, _, Y, lazy)+char('4'), '234'), Y))), ['2','3'])
예제 #43
0
 def test_uLetterdigit(self):
     x, y = Var('x'), Var('y')
     eq_(eval(begin(parse_text(uLetterdigitString(x), '_ad123'), x)),
         "_ad123")
     eq_(eval(begin(parse_text(uLetterdigitString(y), "ad1sff23"), y)),
         "ad1sff23")
예제 #44
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_times_a2(self): 
   X, Y, S = Var('X'), Var('Y'), Var('S')
   function1 = function(((Y,), times(char('a'), 2, 'a', Y)))
   eq_(eval(begin(parse_text(function1(X),'aa'), X)), ['a', 'a'])
   assert_raises(NoSolutionFound, eval, begin(parse_text(function1(X), 'a'), X))
   assert_raises(NoSolutionFound, eval, begin(parse_text(and_p(function1(X), eoi), 'aaa'), X))
예제 #45
0
 def test_skip(self):
     eq_(eval(begin(set_text('abcde'), skip(3), next())), 'd')
     eq_(eval(begin(set_text('abcde'), skip(4), skip(-2), next())), 'c')
예제 #46
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_times_an(self): 
   X, Y, S, n = Var('X'), Var('Y'), Var('S'), Var('n')
   function1 = function( ((Y,), times(char('a'), n, 'a', Y)))
   eq_(eval(begin(parse_text(function1(X), 'a'), X)), ['a'])
   eq_(eval(begin(parse_text(function1(X), 'aa'), X)), ['a', 'a'])
   eq_(eval(begin(parse_text(function1(X), 'aaa'), X)), ['a', 'a', 'a'])
예제 #47
0
 def test_skip(self):
     eq_(eval(begin(set_text('abcde'), goto(2), next_char())), 'c')
예제 #48
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_dummy_seplist(self):
   _, Y = DummyVar('_'), Var('Y')
   eq_(eval(begin(parse_text(seplist(char(_), char(','), _, Y), '2,2,2'), Y)), ['2','2','2'])
   eq_(eval(begin(parse_text(seplist(char(_), char(','), _, Y), '2,3,4'), Y)), ['2', '3', '4'])
   eq_(eval(begin(parse_text(seplist(char(_), char(','), _, Y), '2'), Y)), ['2'])
예제 #49
0
 def test_goto(self):
     eq_(eval(begin(set_text('abcde'), goto(1))), 'bcde')
예제 #50
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_left(self):
   eq_(eval(begin(set_text('ab'), left())), 'ab')
예제 #51
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_any(self):
   X, Y = Var('X'), Var('Y')
   eq_(eval(begin(parse_text(any(char(X), X, Y), '222'), Y)), ['2','2','2'])
   eq_(eval(begin(parse_text(any(char(X), X, Y), '234'), Y)), ['2'])
   eq_(eval(begin(parse_text(any(char(X), X, Y), ''), Y)), [])
예제 #52
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_subtext(self):
   eq_(eval(begin(set_text('abcde'), subtext(0,3))), 'abc')
예제 #53
0
 def test_times(self):
     X, Y = Var('X'), Var('Y')
     eq_(eval(begin(parse_text(times(char(X), 3, X, Y), '222'), Y)),
         ['2', '2', '2'])
     assert_raises(NoSolutionFound, eval,
                   parse_text(times(char(X), 3, X, Y), '2234'))
예제 #54
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_skip(self):
   eq_(eval(begin(set_text('abcde'), goto(2), next_char())), 'c')
예제 #55
0
 def test_left(self):
     eq_(eval(begin(set_text('ab'), left())), 'ab')
예제 #56
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_number(self):
   x, y, z = Var('y'), Var('x'), Var('z')
   eq_(eval(begin(parse_text(number(x), '2'), x)), 2)
   eq_(eval(begin(parse_text(number(y), '234'), y)), 234)
   eq_(eval(begin(parse_text(number(z), '0232'), z)), 154) #0ctal
예제 #57
0
 def test_position(self):
     eq_(eval(begin(set_text('ab'), position())), 0)
예제 #58
0
파일: testparser.py 프로젝트: charyorde/dao
 def test_spaces(self):
   x ,y  = Var('x'), Var('y')
   eq_(eval(begin(parse_text(spaces(x), ' '), x)), " ")
   eq_(eval(begin(parse_text(spaces(y), "\r\t\n"), y)), "\r\t\n")
예제 #59
0
 def test_subtext(self):
     eq_(eval(begin(set_text('abcde'), subtext(0, 3))), 'abc')