def p_typed_variables_lst(p): '''typed_variables_lst : variables_lst HYPHEN type typed_variables_lst | variables_lst HYPHEN type''' if len(p) == 4: p[0] = [Term.variable(name, p[3]) for name in p[1]] elif len(p) == 5: p[0] = [Term.variable(name, p[3]) for name in p[1]] + p[4]
def p_variables_lst(p): '''variables_lst : variable variables_lst | variable''' if len(p) == 2: p[0] = [Term.variable(p[1])] elif len(p) == 3: p[0] = [Term.variable(p[1])] + p[2]
def add_to_domain(domain): ############################################ # Let's now create TYPES AND PREDICATES ############################################ domain.add_type('boxes') domain.add_pred('open', [('?x', 'boxes'), ('?z', 'block')]) domain.del_pred('handempty', 0) # print(repr(domain.operators[3])) ############################################ # Let's now create an OPERATOR ############################################ # print(domain.operators[3].precond) params = [Term.variable('?x', type='blocks'), Term.variable('?y', type='blocks')] precond=[] precond.append(Literal(Predicate('=', [Term.variable('?x'), Term.variable('?y')]), False)) precond.append(Literal(Predicate('on', [Term.variable('?x'), Term.variable('?y')]), True)) precond.append(Literal(Predicate('clear', [Term.variable('?x')]), True)) precond.append(Literal(Predicate('handempty', []), True)) # print(domain.operators[3].effects) effect=[] effect.append((1.0, Literal(Predicate('holding', [Term.variable('?x')]), True))) effect.append((1.0, Literal(Predicate('clear', [Term.variable('?y')]), True))) effect.append((1.0, Literal(Predicate('clear', [Term.variable('?x')]), False))) effect.append((1.0, Literal(Predicate('handempty', []), False))) effect.append((1.0, Literal(Predicate('on', [Term.variable('?x'), Term.variable('?y')]), False))) # print(repr(effect)) domain.add_action('pick-up-b', params, precond, effect)