def store(self, **kwargs): '''Read GDL rules into the datalog database.''' self.db = self.db or Database() tokens = Lexer.run_lex(**kwargs) for tree in Parser.run_parse(tokens): if tree.is_true(): raise GameError(GameError.NO_TRUE_ALLOWED) elif tree.is_init(): true = tree.copy() true.token.set(value='true') self.db.define(true) self.db.define(tree) try: roles = self.db.facts[('role', 1)] except KeyError: raise GameError(GameError.NO_PLAYERS) self.players = set([str(x[0]) for x in roles])
def _single_move_to_ast(self, move): '''Converts the move string to an ASTNode.''' return Parser.run_parse(Lexer.run_lex(data=move))[0]