def _build_and_run(self, tree): from pypy.lang.prolog.interpreter.parsing import TermBuilder builder = TermBuilder() term = builder.build_query(tree) if isinstance(term, Term) and term.name == ":-" and len( term.args) == 1: self.run(term.args[0]) else: self.add_rule(term) return self.parser
def parse(self, s): from pypy.lang.prolog.interpreter.parsing import parse_file, TermBuilder, lexer builder = TermBuilder() trees = parse_file(s, self.parser) terms = builder.build_many(trees) return terms, builder.varname_to_var