def p_lista_ids_not_p_2(p):
    ''' lista_ids_not_p : ID lista_ids_not_p'''

    if "NEGATIVE-PRECONDITIONS" in objDomain.domain_requirements:
        objProblem.appendId("!"+p[1])
    else:
        errorhandler.reportError("!"+p[1])
def p_lista_objids_p_2(p):
    '''lista_objids_p : ID lista_objids_p'''

    if p[1] in objProblem.lista_ids:
        errorhandler.reportError("o*"+p[1])
    else:
        objProblem.appendId(p[1])
def p_lista_var_2(p):
    '''lista_var : VAR ID lista_var'''

    if p[2] in objDomain.pddl_vars:
        errorhandler.reportError("vp*"+p[2]) # var repetida
    else:
        objDomain.appendVar(p[2])
def p_lista_objects_2(p):
    '''lista_objects : lista_objids_p MINUS ID lista_objects'''
    
    if ("TYPING" in objDomain.domain_requirements) and (p[3] in objDomain.domain_types):
        objProblem.appendObjType(p[3])
    else:
        errorhandler.reportError("?"+p[3])
def p_lista_parameters_2(p):
    '''lista_parameters : lista_var MINUS ID lista_parameters'''
    # objDomain.cleanListaPDDLvars()
    if ("TYPING" in objDomain.domain_requirements) and (p[3] in objDomain.domain_types):
        objDomain.appendType(p[3])
    else:
        errorhandler.reportError("?"+p[3])
Example #6
0
    def setProblemObjects(self):
        self.lista_obj_type.reverse()
        # print(self.lista_ids_sep)
        check_obj_repetition = []
        if self.lista_obj_type:
            if len(self.lista_obj_type) != len(self.lista_ids_sep):
                print(
                    "Semantic Error: all problem objects must be typed or not typed"
                )
                sys.exit()
            for obj_type, ids in zip(self.lista_obj_type, self.lista_ids_sep):
                if obj_type in self.problem_objects:
                    self.problem_objects[
                        obj_type] = self.problem_objects[obj_type] + ids
                else:
                    self.problem_objects[obj_type] = ids
                for oid in ids:
                    check_obj_repetition.append(oid)
        else:
            for ids in self.lista_ids_sep:
                self.problem_objects["(NOTYPE)"] = ids
                for oid in ids:
                    check_obj_repetition.append(oid)

        if len(check_obj_repetition) != len(set(check_obj_repetition)):
            errorhandler.reportError("ot*")  # repeated obj from diff types
        # cleann variables to use in :INIT formalization
        self.cleanProblemIds()
        self.cleanProblemListaIdsSep()
def p_def_predicates_2(p):
    '''def_predicates : LPAREN COLON PREDICATES lista_predicates RPAREN'''
    # print(objDomain.lista_predicados) # predicates completo
    if len(objDomain.lista_predicados) != len(set(objDomain.lista_predicados)):
        # predicado com nome repetido
        errorhandler.reportError("*"+p[3])

    objDomain.setDomainPredicates()
def p_def_functions_1(p):
    '''def_functions : LPAREN COLON FUNCTIONS lista_functions_def RPAREN'''
    
    if len(objDomain.lista_pddl_func) !=  len(set(objDomain.lista_pddl_func)):
        errorhandler.reportError("f*")
    objDomain.dealWithFunctionDef()
    objDomain.cleanPDDLvars() # clean antes de dealWithActions    
    objDomain.cleanListaPDDLvars()
    objDomain.cleanTypes()
def p_lista_functions_def_2(p):
    '''lista_functions_def : LPAREN ID lista_var MINUS ID RPAREN lista_functions_def'''

    objDomain.appendFunction(p[2])
    if "TYPING" in objDomain.domain_requirements:
        objDomain.appendType(p[5])
        objDomain.appendFuncType("(NOTYPE)")
    else:
        errorhandler.reportError("@"+p[5])
def p_def_actions_2(p):
    '''def_actions : LPAREN COLON ACTION ID a_def RPAREN def_actions'''
    
    if p[4] in objDomain.lista_actions:
        errorhandler.reportError(">"+p[4])

    objDomain.lista_actions.append(p[4])
    # objDomain.dealWithAction(p[4])
    objDomain.setDomainActions(p[4])
def p_lista_predicates_2(p):
    '''lista_predicates : LPAREN ID p_def RPAREN lista_predicates'''
    objDomain.appendPredicado(p[2])
    
    if objDomain.dealing_with_types:
        if "TYPING" in objDomain.domain_requirements:
            objDomain.dealingWithTypeSep()
        else:
            errorhandler.reportError("@"+p[2])
def p_p_def_1(p):
    '''p_def : lista_var MINUS ID p_def'''
    # if objDomain.pddl_vars:
    objDomain.appendListaPDDLvars()

    objDomain.cleanPDDLvars()
    if ("TYPING" in objDomain.domain_requirements) and (p[3] in objDomain.domain_types):
        objDomain.dealingWithType(p[3])
    else:
        errorhandler.reportError("?"+p[3])
def p_lista_types_2(p):
    '''lista_types : ID lista_types'''
    
    if "TYPING" in objDomain.domain_requirements:
        if p[1] in objDomain.lista_types:
            errorhandler.reportError("t*"+p[1])
        else:
            objDomain.appendType(p[1])
    else:
        errorhandler.reportError("@"+p[1])
def p_lista_constants_2(p):
    '''lista_constants : lista_ids MINUS ID lista_constants'''

    if objDomain.pddl_ids:
        if len(objDomain.pddl_ids) != len(set(objDomain.pddl_ids)):
            errorhandler.reportError("c*")
        else:
            objDomain.appendListaPDDLids()
    objDomain.cleanPDDLids()
    if "TYPING" in objDomain.domain_requirements:
        objDomain.dealingWithType(p[3])
    else:    
        errorhandler.reportError("@"+p[3])
Example #15
0
    def setProblemObjects(self):
        self.lista_obj_type.reverse()
        # print(self.lista_ids_sep)
        check_obj_repetition = []
        for obj_type, ids in zip(self.lista_obj_type, self.lista_ids_sep):
            self.problem_objects[obj_type] = ids
            for oid in ids:
                check_obj_repetition.append(oid)

        if len(check_obj_repetition) != len(set(check_obj_repetition)):
            errorhandler.reportError("ot*")  # repeated obj from diff types
        # cleann variables to use in :INIT formalization
        self.cleanProblemIds()
        self.cleanProblemListaIdsSep()
def p_lista_predicados_1(p):
    '''lista_predicados : LPAREN ID lista_var RPAREN lista_preds_op'''

    if objDomain.pddl_vars:
        objDomain.appendListaPDDLvars()
    # else:
    #     # objDomain.pddl_vars = ["(NOVdAR)"]
    #     objDomain.appendListaPDDLvars()

    objDomain.cleanPDDLvars()

    if p[2] in [pred_name.name for pred_name in objDomain.domain_predicates]:
        objDomain.appendPredicado(p[2])
    else:
        errorhandler.reportError("#"+p[2])
def p_lista_predicados_6(p):
    '''lista_predicados : LPAREN ID RPAREN lista_predicados '''
    # print(">>ID",p[2])
    objDomain.appendListaPDDLvars()
    objDomain.cleanPDDLvars()
    objDomain.appendVar(p[2])
    # objDomain.appendVar("(NOVAR)")
    objDomain.appendListaPDDLvars()

    if p[2] in [pred_name.name for pred_name in objDomain.domain_predicates]:
        objDomain.appendPredicado(p[2])
    else:
        errorhandler.reportError("#"+p[2])

    objDomain.cleanPDDLvars()
def p_error(p):
    # print("Syntax error in %s line %d"%(p.value,plex.lexer.lineno))
    if p != None:
        errorhandler.reportError(p.value)
    else:
        errorhandler.reportError("(")
def p_def_domain_p_1(p):
    '''def_domain_p : LPAREN COLON DOMAIN ID RPAREN'''
    
    if p[4] != objDomain.domain_name:
        errorhandler.reportError(["]"+p[4],objDomain.domain_name])
    objProblem.setProblemDomain(p[4])
def p_lista_constants_3(p): # catch error dsd
    '''lista_constants : lista_ids MINUS ID lista_ids
                        | lista_ids'''

    errorhandler.reportError("const-typed")