def ____get_features_vars(m_str): #print '1111',m_str feature_list = list() var_list = list() names_list = list() functions = Util.get_paras_from_str(m_str) for function in functions: fun_name, fun_para, fun_value = Util.parse_relation_or_function( function) var_list += [ mvar for mvar in Util.get_paras_from_str(fun_para) + [fun_value] if Util.isVar(mvar) ] feature_list.append(Util.generate_function_feature(function)) names_list.append(fun_name) return names_list, feature_list, var_list
def ____get_vars_from_relations(relation_list): if relation_list == [""]: return list() var_list = list() for relation in relation_list: fun_name, fun_para, fun_value = Util.parse_relation(relation) fun_name2, fun_para2, fun_value2 = Util.parse_function(relation) if fun_name == None and fun_name2 == None: print '~~~~~~(ERROR):', relation error_message = "#Error-----when parsing str %s-----Util.parse_relation: Exist" % relation raise Exception(error_message) if fun_name == None: fun_name, fun_para, fun_value = fun_name2, fun_para2, fun_value2 var_list += [ mvar for mvar in Util.get_paras_from_str(fun_para) + [fun_value] if Util.isVar(mvar) ] return var_list
def __get_sort_from_function(function): #print '!!!',function fun_name, fun_paras, fun_value = Util.parse_relation_or_function(function) para_list = Util.get_paras_from_str(fun_paras) #symbol_sort = [(symbol, (fun_name, pos+1)) for pos, symbol in enumerate(para_list) if not isMath(symbol)] #symbol_INT = sum([ __get_INTsymbol_from_expression(symbol) for pos, symbol in enumerate(para_list) if isMath(symbol)],[]) symbol_sort = list() equal_symbols = list() for pos, symbol in enumerate(para_list): if not isMath(symbol): symbol_sort += [(symbol.strip(), (fun_name, pos + 1))] else: symbol_INT, words = __get_INTsymbol_from_expression(symbol.strip()) symbol_sort += symbol_INT symbol_sort += [(symbol.strip(), (fun_name, pos + 1)) for symbol in words] return symbol_sort
def __pre_parse(rule_list): relation_list = ____get_relations_from_rules(rule_list) zero_arity_fluents = ____get_0arity_functions(relation_list) rule_list = ____handle_0arity_fluents(rule_list, zero_arity_fluents) relationlist_list = ____get_relationlist_list_from_rules(rule_list) varlist_list = ____get_vars_from_relationlist_list(relationlist_list) rule_list = ____rename_rule_vars(rule_list, varlist_list) #return rule_list #exit(0) context_operator.set_zero_fluent(zero_arity_fluents) #print "hello", rule_list for rule in rule_list: functions = Util.get_paras_from_str(rule[1]) [ sort_system.generate_sort_from_formula(item) for item in functions + [rule[2]] ] equal_sort_list = sort_system.discover_sorts() sort_system.generate_new_sorts(equal_sort_list) #print context_operator.get_symbol_sorts_dict() #print context_operator.get_sort_symbols_dict() #print context_operator.get_sorts() #logger.info("after detecting sort: %s\n %s\n %s\n"%(context_operator.get_symbol_sorts_dict(), context_operator.get_sort_symbols_dict(),context_operator.get_sorts()) ) #print context_operator.get_sorts() #print #print context_operator.get_symbol_sorts_dict() #print #print context_operator.get_sort_symbols_dict() rule_list = ____add_sort_forall(rule_list) #print rule_list return rule_list
def ____get_relationlist_list_from_rules(rule_list): return [Util.get_paras_from_str(rule[1]) for rule in rule_list]
def ____get_relations_from_rules(rule_list): return sum([ Util.get_paras_from_str(rule[1]) for rule in rule_list if rule[1] != "" ], [])