def rebuild_ast(instructions): tags, exit = _extract_tags(instructions) for idx, (op, var, val) in enumerate(instructions): if op == Instruction.TAG: yield (op, None, tags[idx + 1]) elif op in (Instruction.INC, Instruction.DEC): yield (op, Instruction.num_to_var(var), str(val)) elif op == Instruction.JNZ: yield (op, Instruction.num_to_var(var), tags.get(idx + 1, exit))