def run(self): global DEBUG_FLAG data = self.preprocess_metafunctions() if DEBUG_FLAG: self.display_preprocessed_code(data) model = PrologString(data) if DEBUG_FLAG: print '=' * 80 print "BEFORE ESCAPING" print '=' * 80 for elem in model: print clause2str(elem) print '=' * 80 model = escape_metafunctions(model) if DEBUG_FLAG: print '=' * 80 print "AFTER ESCAPING" print '=' * 80 for elem in model: print clause2str(elem) print '=' * 80 engine = DefaultEngine(label_all=True) engine.add_builtin(METAMETAFUNCTION_FUNCTOR, 2, BooleanBuiltIn(self.builtin_metafunction)) engine.add_builtin('declare', 2, BooleanBuiltIn(self.builtin_declare)) engine.add_builtin('declare', 3, BooleanBuiltIn(self.builtin_declare)) db = engine.prepare(model) if DEBUG_FLAG: print "=" * 80 print "DATABASE" print "=" * 80 for elem in db: print elem print "=" * 80 gp = LogicFormula( keep_all=True, keep_order=True, keep_duplicates=True, avoid_name_clash=True ) gp = engine.ground_all(db, target=gp) if DEBUG_FLAG: print "=" * 80 print "GROUND PROGRAM (GROUNDER)" print "=" * 80 for elem in gp.enum_clauses(): print elem print "=" * 80 clauses = [] facts = [] for clause in unescape_metafunctions(gp.enum_clauses()): if isinstance(clause, Clause): clauses.append(clause) else: facts.append(clause) query_atoms = gp._names['query'] return self.builtin_declare.declarations, clauses + facts, query_atoms
def init_engine(**kwdargs): engine = DefaultEngine(**kwdargs) engine.add_builtin("sample", 2, builtin_sample) engine.add_builtin("value", 2, builtin_sample) engine.add_builtin("previous", 2, builtin_previous) engine.previous_result = None return engine
def init_engine(**kwdargs): engine = DefaultEngine(**kwdargs) engine.add_builtin('sample', 2, builtin_sample) engine.add_builtin('value', 2, builtin_sample) engine.add_builtin('previous', 2, builtin_previous) engine.previous_result = None return engine