示例#1
0
 def init(self, expr):
     super(Except, self).init(expr)
     self.c = Pattern.create(expr.leaves[0])
     if len(expr.leaves) == 2:
         self.p = Pattern.create(expr.leaves[1])
     else:
         self.p = Pattern.create(Expression('Blank'))
示例#2
0
 def init(self, expr):
     super(Optional, self).init(expr)
     self.pattern = Pattern.create(expr.leaves[0])
     if len(expr.leaves) == 2:
         self.default = expr.leaves[1]
     else:
         self.default = None
示例#3
0
def match(expr, form, evaluation):        
    class StopGenerator_MatchQ(StopGenerator):
        pass
    
    form = Pattern.create(form)
    def yield_func(vars, rest):
        raise StopGenerator_MatchQ(Symbol("True"))
    try:
        form.match(yield_func, expr, {}, evaluation)
    except StopGenerator_MatchQ, exc:
        return True
示例#4
0
    def init(self, expr, min=1):
        self.pattern = Pattern.create(expr.leaves[0])

        self.max = None
        self.min = min
        if len(expr.leaves) == 2:
            leaf_1 = expr.leaves[1]
            if (leaf_1.has_form('List', 1, 2) and all(leaf.get_int_value() for leaf in leaf_1.leaves)):
                self.max = leaf_1.leaves[-1].get_int_value()
                self.min = leaf_1.leaves[0].get_int_value()
            elif leaf_1.get_int_value():
                self.max = leaf_1.get_int_value()
            else:
                self.error('range', 2, expr)
示例#5
0
 def apply(self, expr, form, evaluation):
     'MatchQ[expr_, form_]'
     
     class StopGenerator_MatchQ(StopGenerator):
         pass
     
     form = Pattern.create(form)
     #for vars, rest in form.match(expr, {}, evaluation):
     def yield_func(vars, rest):
         #return Symbol("True")
         raise StopGenerator_MatchQ(Symbol("True"))
     try:
         form.match(yield_func, expr, {}, evaluation)
     except StopGenerator_MatchQ, exc:
         return exc.value
示例#6
0
 def init(self, expr):
     super(Condition, self).init(expr)
     self.pattern = Pattern.create(expr.leaves[0])
     self.test = expr.leaves[1]
示例#7
0
 def __init__(self, form):
     self.form = Pattern.create(form)
示例#8
0
 def init(self, expr):
     super(Pattern_, self).init(expr)
     self.varname = expr.leaves[0].get_name()
     if self.varname is None:
         self.error('patvar', expr)
     self.pattern = Pattern.create(expr.leaves[1])
示例#9
0
 def init(self, expr):
     super(Pattern_, self).init(expr)
     self.varname = expr.leaves[0].get_name()
     if self.varname is None:
         self.error('patvar', expr)
     self.pattern = Pattern.create(expr.leaves[1])
示例#10
0
 def __init__(self, pattern, system=False):
     self.pattern = Pattern.create(pattern)
     self.system = system
示例#11
0
 def init(self, expr):
     super(Condition, self).init(expr)
     self.pattern = Pattern.create(expr.leaves[0])
     self.test = expr.leaves[1]
示例#12
0
 def __init__(self, form):
     self.form = Pattern.create(form)
示例#13
0
文件: rules.py 项目: GitAnt/Mathics
 def __init__(self, pattern, system=False):
     super(BaseRule, self).__init__()
     self.pattern = Pattern.create(pattern)
     self.system = system
示例#14
0
 def __init__(self, pattern, system=False):
     super(BaseRule, self).__init__()
     self.pattern = Pattern.create(pattern)
     self.system = system
示例#15
0
 def __init__(self, form):
     if isinstance(form, Pattern):
         self.form = form
     else:
         self.form = Pattern.create(form)
示例#16
0
 def init(self, expr):
     super(PatternTest, self).init(expr)
     self.pattern = Pattern.create(expr.leaves[0])
     self.test = expr.leaves[1]
     self.test_name = self.test.get_name()
示例#17
0
 def init(self, expr):
     super(Alternatives, self).init(expr)
     self.alternatives = [Pattern.create(leaf) for leaf in expr.leaves]
示例#18
0
 def init(self, expr):
     super(PatternTest, self).init(expr)
     self.pattern = Pattern.create(expr.leaves[0])
     self.test = expr.leaves[1]
     self.test_name = self.test.get_name()
示例#19
0
 def init(self, expr):
     super(HoldPattern, self).init(expr)
     self.pattern = Pattern.create(expr.leaves[0])
示例#20
0
 def init(self, expr):
     super(Alternatives, self).init(expr)
     self.alternatives = [Pattern.create(leaf) for leaf in expr.leaves]
示例#21
0
 def init(self, expr):
     super(HoldPattern, self).init(expr)
     self.pattern = Pattern.create(expr.leaves[0])
示例#22
0
 def __init__(self, pattern, system=False):
     self.pattern = Pattern.create(pattern)
     self.system = system