in data/envs/babyai/bot_agent.py [0:0]
def _process_instr(self, instr):
"""
Translate instructions into an internal form the agent can execute
"""
if isinstance(instr, GoToInstr):
self.stack.append(GoNextToSubgoal(self, instr.desc))
return
if isinstance(instr, OpenInstr):
self.stack.append(OpenSubgoal(self))
self.stack.append(GoNextToSubgoal(self, instr.desc, reason="Open"))
return
if isinstance(instr, PickupInstr):
# We pick up and immediately drop so
# that we may carry other objects
self.stack.append(DropSubgoal(self))
self.stack.append(PickupSubgoal(self))
self.stack.append(GoNextToSubgoal(self, instr.desc))
return
if isinstance(instr, PutNextInstr):
self.stack.append(DropSubgoal(self))
self.stack.append(GoNextToSubgoal(self, instr.desc_fixed, reason="PutNext"))
self.stack.append(PickupSubgoal(self))
self.stack.append(GoNextToSubgoal(self, instr.desc_move))
return
if isinstance(instr, BeforeInstr) or isinstance(instr, AndInstr):
self._process_instr(instr.instr_b)
self._process_instr(instr.instr_a)
return
if isinstance(instr, AfterInstr):
self._process_instr(instr.instr_a)
self._process_instr(instr.instr_b)
return
assert False, "unknown instruction type"