Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
def ____get_relationlist_list_from_rules(rule_list):
    return [Util.get_paras_from_str(rule[1]) for rule in rule_list]
Esempio n. 6
0
def ____get_relations_from_rules(rule_list):
    return sum([
        Util.get_paras_from_str(rule[1]) for rule in rule_list if rule[1] != ""
    ], [])