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])
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])
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")