From f96522e18e8f01cc96f76b0b9824bfc2c0ab5ee5 Mon Sep 17 00:00:00 2001 From: rocky Date: Sun, 14 Apr 2019 19:01:33 -0400 Subject: [PATCH] Add 3.8 try else --- test/bytecode_3.8/04_async_stmt.pyc | Bin 0 -> 304 bytes uncompyle6/parsers/parse38.py | 9 +++++++++ uncompyle6/semantics/customize3.py | 11 ++++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 test/bytecode_3.8/04_async_stmt.pyc diff --git a/test/bytecode_3.8/04_async_stmt.pyc b/test/bytecode_3.8/04_async_stmt.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5a76ea8f0f78368eb223703eaefdcefebd787cb8 GIT binary patch literal 304 zcmea|<>g`kf*GH;M?D78APfggK$Zg#7xMs#6owSW7KSK>6sBMXP3B}qpb!XvXbvDg z48+9-K%z>hhG7B2LIzKu4iBJoI76NY3quKGHdm1vBaqL?5Xq3o7Qs-$)Wn#=05pry zPm}o;TVhE@QGWR?UiZ|z)S|?a{36$i%#vF?L8W;mnYpR1MMe2VnvAztic@paRx%W^ z0xkNbQk{WZ(tIiSX`Nx9A8|LTcTG`2{bu5C%-tA8RR~& tR~eZYg&6r5*_evhfnt7|j9?mUBoe^}l)J@YlbfGXnv-e=()}5T82~aFK`a0O literal 0 HcmV?d00001 diff --git a/uncompyle6/parsers/parse38.py b/uncompyle6/parsers/parse38.py index 8e02dbab..7a8398e0 100644 --- a/uncompyle6/parsers/parse38.py +++ b/uncompyle6/parsers/parse38.py @@ -32,6 +32,7 @@ class Python38Parser(Python37Parser): stmt ::= forelselaststmt38 stmt ::= forelselaststmtl38 stmt ::= tryfinally38 + stmt ::= try_elsestmtl38 stmt ::= try_except_ret38 stmt ::= try_except38 stmt ::= whilestmt38 @@ -112,6 +113,10 @@ class Python38Parser(Python37Parser): except_cond1 ::= DUP_TOP expr COMPARE_OP jmp_false POP_TOP POP_TOP POP_TOP POP_EXCEPT + + try_elsestmtl38 ::= SETUP_FINALLY suite_stmts_opt POP_BLOCK + except_handler38 COME_FROM + else_suitel opt_come_from_except try_except ::= SETUP_FINALLY suite_stmts_opt POP_BLOCK except_handler38 try_except38 ::= SETUP_FINALLY POP_BLOCK POP_TOP suite_stmts_opt @@ -201,6 +206,10 @@ class Python38Parser(Python37Parser): forelsestmt ::= SETUP_LOOP expr for_iter store for_block POP_BLOCK else_suite forelselaststmt ::= SETUP_LOOP expr for_iter store for_block POP_BLOCK else_suitec forelselaststmtl ::= SETUP_LOOP expr for_iter store for_block POP_BLOCK else_suitel + + tryelsestmtl3 ::= SETUP_EXCEPT suite_stmts_opt POP_BLOCK + except_handler COME_FROM else_suitel + opt_come_from_except try_except ::= SETUP_EXCEPT suite_stmts_opt POP_BLOCK except_handler opt_come_from_except tryfinallystmt ::= SETUP_FINALLY suite_stmts_opt POP_BLOCK diff --git a/uncompyle6/semantics/customize3.py b/uncompyle6/semantics/customize3.py index 837371ef..2d8759d5 100644 --- a/uncompyle6/semantics/customize3.py +++ b/uncompyle6/semantics/customize3.py @@ -999,15 +999,20 @@ def customize_for_version3(self, version): (0, 'testexpr'), (1, 'l_stmts') ), 'whileTruestmt38': ( '%|while True:\n%+%c%-\n\n', (0, 'l_stmts') ), - 'tryfinally38': ( - '%|try:\n%+%c%-%|finally:\n%+%c%-\n\n', - (3, 'returns'), 6 ), + 'try_elsestmtl38': ( + '%|try:\n%+%c%-%c%|else:\n%+%c%-', + (1, 'suite_stmts_opt'), + (3, 'except_handler38'), + (5, 'else_suitel') ), 'try_except38': ( '%|try:\n%+%c\n%-%|except:\n%|%-%c\n\n', (-2, 'suite_stmts_opt'), (-1, 'except_handler38a') ), 'try_except_ret38': ( '%|try:\n%+%|return %c%-\n%|except:\n%+%|%c%-\n\n', (1, 'expr'), (-1, 'except_ret38a') ), + 'tryfinally38': ( + '%|try:\n%+%c%-%|finally:\n%+%c%-\n\n', + (3, 'returns'), 6 ), }) pass # version >= 3.8 pass