Exemple #1
0
 def build_lisp(self):
     field_values = sorted(self.field_values,
                           key=lambda (field, value): str(field))
     res = LispExpr(
         self.container._name,
         *(LispExpr(field.name, value) for field, value in field_values))
     if self.negative:
         res = LispExpr('not', res)
     return res
Exemple #2
0
 def _build_lhs(self):
     lhs = []
     if self.salience is not None:
         lhs.append(LispExpr('declare', LispExpr('salience',
                                                 self.salience)))
     for premise in sorted(self.premises.itervalues(),
                           key=lambda p: p.var_name):
         premise.replace_values(self.variable_values)
         lhs.append(premise.build_str())
     lhs.extend(
         condition.replace_fields(self.variable_map).to_lisp()
         for condition in self.conditions)
     return '\n'.join(str(x) for x in lhs)
Exemple #3
0
 def to_lisp(self):
     args = [arg.to_lisp() for arg in self.args]
     return LispExpr('if', args[0], 'then', args[1], 'else', args[2])
Exemple #4
0
 def to_lisp(self):
     field_values = self._field_values_to_lisp()
     return LispExpr('assert',
                     LispExpr(self.rule.get_target_name(), *field_values))
Exemple #5
0
 def _field_values_to_lisp(self):
     return [
         LispExpr(key, value.to_lisp())
         for key, value in sorted(self.data.iteritems())
     ]
Exemple #6
0
 def to_lisp(self):
     return LispExpr('retract', self.fact)
Exemple #7
0
 def to_lisp(self):
     field_values = self._field_values_to_lisp()
     return LispExpr('modify', self.fact, *field_values)
Exemple #8
0
 def to_lisp(self):
     if not self.args:
         return '({})'.format(self.func_name)
     else:
         return LispExpr(self.func_name, *(arg.to_lisp() for arg in self.args))
Exemple #9
0
 def to_lisp(self):
     return LispExpr(self.op, self.expr.to_lisp())
Exemple #10
0
 def to_lisp(self):
     expr = self.expr
     if isinstance(self.expr, VariableExpr):
         expr = not_(not_(expr))
     return LispExpr('test', expr.to_lisp())
Exemple #11
0
 def to_lisp(self):
     return LispExpr(self.op, *(arg.to_lisp() for arg in self.args))
Exemple #12
0
 def build_target_field(self):
     return LispExpr(self.target_field_name, self.target_field_var)