def tag_loop_label(self, tagger): label = tagger.make_label(self.label) tagger.push_label('until', label) body = tagger.tag_loop_label(self.body) tagger.pop_label('until') body = body+(if_(not_(self.condition), continue_block(label)), ) return begin(block(label, *body), None)
def tag_loop_label(self, tagger): label = tagger.make_label(self.label) tagger.push_label('when', label) body = tagger.tag_loop_label(self.body) tagger.pop_label('when') start_condition = [if_(not_(self.condition), exit_block(label))] return begin(block(label, *(start_condition+list(body)+[continue_block(label)])), None)