Fix another 3.0 list comprehension parse

This commit is contained in:
rocky
2022-11-05 00:27:05 -04:00
parent f59d0bf306
commit 57d2386cc3
2 changed files with 11 additions and 6 deletions

View File

@@ -115,11 +115,13 @@ class Python30Parser(Python31Parser):
# From Python 2.6 # From Python 2.6
list_iter ::= list_if JUMP_BACK lc_body ::= LOAD_FAST expr LIST_APPEND
list_iter ::= list_if JUMP_BACK _come_froms POP_TOP lc_body ::= LOAD_NAME expr LIST_APPEND
lc_body ::= LOAD_NAME expr LIST_APPEND list_if ::= expr jmp_false_then list_iter
lc_body ::= LOAD_FAST expr LIST_APPEND list_if_not ::= expr jmp_true list_iter JUMP_BACK come_froms POP_TOP
list_if ::= expr jmp_false_then list_iter list_iter ::= list_if JUMP_BACK
list_iter ::= list_if JUMP_BACK _come_froms POP_TOP
############# #############
dict_comp_iter ::= expr expr ROT_TWO expr STORE_SUBSCR dict_comp_iter ::= expr expr ROT_TWO expr STORE_SUBSCR

View File

@@ -661,7 +661,10 @@ class ComprehensionMixin:
list_ifs.append(n) list_ifs.append(n)
else: else:
list_ifs.append([1]) list_ifs.append([1])
n = n[-2] if n[-1] == "come_from_opt" else n[-1] if self.version[:2] == (3, 0) and n[2] == "list_iter":
n = n[2]
else:
n = n[-2] if n[-1] == "come_from_opt" else n[-1]
pass pass
elif n == "list_if37": elif n == "list_if37":
list_ifs.append(n) list_ifs.append(n)