3.8 try/except handling - again (and more to come)

This commit is contained in:
rocky
2019-04-12 03:20:13 -04:00
parent a891aa0706
commit 44edf1d7db
2 changed files with 14 additions and 2 deletions

View File

@@ -31,6 +31,7 @@ class Python38Parser(Python37Parser):
stmt ::= forelselaststmtl38
stmt ::= tryfinally38
stmt ::= try_except_ret38
stmt ::= try_except38
# FIXME this should be restricted to being inside a try block
stmt ::= except_ret38
@@ -60,8 +61,11 @@ class Python38Parser(Python37Parser):
POP_EXCEPT
try_except ::= SETUP_FINALLY suite_stmts_opt POP_BLOCK
except_handler38
try_except38 ::= SETUP_FINALLY POP_BLOCK POP_TOP suite_stmts_opt
except_handler38a
try_except_ret38 ::= SETUP_FINALLY expr POP_BLOCK
RETURN_VALUE except_ret38a
except_ret38 ::= SETUP_FINALLY expr ROT_FOUR POP_BLOCK POP_EXCEPT
CALL_FINALLY RETURN_VALUE COME_FROM_FINALLY
suite_stmts_opt END_FINALLY
@@ -70,6 +74,9 @@ class Python38Parser(Python37Parser):
POP_EXCEPT RETURN_VALUE END_FINALLY
except_handler38 ::= JUMP_FORWARD COME_FROM_FINALLY
except_stmts END_FINALLY opt_come_from_except
except_handler38a ::= COME_FROM_FINALLY POP_TOP POP_TOP POP_TOP
POP_EXCEPT POP_TOP stmts END_FINALLY
tryfinallystmt ::= SETUP_FINALLY suite_stmts_opt POP_BLOCK
BEGIN_FINALLY COME_FROM_FINALLY suite_stmts_opt
END_FINALLY
@@ -94,7 +101,7 @@ class Python38Parser(Python37Parser):
self.remove_rules("""
stmt ::= for
stmt ::= forelsestmt
stmt ::= try_except38
stmt ::= try_except36
for ::= SETUP_LOOP expr for_iter store for_block POP_BLOCK
for ::= SETUP_LOOP expr for_iter store for_block POP_BLOCK NOP