Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Error with break inside nested for loop

オープン
#323 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python

調査の方向性

Start by reproducing the nested-loop example with Python 3.8 and uncompyle6 3.7.2, then trace how the bytecode around POP_TOP, JUMP_ABSOLUTE, and FOR_ITER is classified. Done means the sample decompiles with break represented as break rather than continue, without introducing regressions in related loop cases.

索引モデルが issue の本文から書いたものです。

説明

Control Flow Python 3.8 Volunteer wanted Works on decompyle3

This code fails to decompile under python3.8:

for x in arr_a:
    for y in arr_b:
        var = True
        break

Bytecode:

  1           0 LOAD_NAME                0 (arr_a)
              2 GET_ITER
        >>    4 FOR_ITER                22 (to 28)
              6 STORE_NAME               1 (x)

  2           8 LOAD_NAME                2 (arr_b)
             10 GET_ITER
        >>   12 FOR_ITER                12 (to 26)
             14 STORE_NAME               3 (y)

  3          16 LOAD_CONST               0 (True)
             18 STORE_NAME               4 (var)

  4          20 POP_TOP
             22 JUMP_ABSOLUTE            4
             24 JUMP_ABSOLUTE           12
        >>   26 JUMP_ABSOLUTE            4
        >>   28 LOAD_CONST               1 (None)
             30 RETURN_VALUE

Error:

# uncompyle6 version 3.7.2
# Python bytecode 3.8 (3413)
# Decompiled from: Python 3.8.3 (default, May 14 2020, 11:03:12) 
# [GCC 9.3.0]
# Embedded file name: ./code.py
# Compiled at: 2020-06-29 18:58:01
# Size of source mod 2**32: 69 bytes
Instruction context:
   
 L.   4        20  POP_TOP          
->                22  CONTINUE              4  'to 4'
                  24  JUMP_BACK            12  'to 12'


# file __pycache__/code.cpython-38.pyc
# --- This code section failed: ---

 L.   1         0  LOAD_NAME                arr_a
                2  GET_ITER         
                4  FOR_ITER             28  'to 28'
                6  STORE_NAME               x

 L.   2         8  LOAD_NAME                arr_b
               10  GET_ITER         
               12  FOR_ITER             26  'to 26'
               14  STORE_NAME               y

 L.   3        16  LOAD_CONST               True
               18  STORE_NAME               var

 L.   4        20  POP_TOP          
               22  CONTINUE              4  'to 4'
               24  JUMP_BACK            12  'to 12'
               26  JUMP_BACK             4  'to 4'

Parse error at or near `CONTINUE' instruction at offset 22

This seems to be caused by the 'break' being recognised as a 'continue'?

主要言語
Python
スター
4.3k
フォーク
465
平均マージ
4日 11時間
マージ済み PR(30日)
3

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

rocky/python-uncompyle6 のほかの issue

rocky/python-uncompyle6 の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。