Backport PEP 3110's new 'except' syntax to 2.6.

This commit is contained in:
Collin Winter 2007-05-18 23:11:24 +00:00
parent 6eb7bede72
commit 6290305e67
6 changed files with 12 additions and 7 deletions

View File

@ -85,7 +85,7 @@ try_stmt: ('try' ':' suite
with_stmt: 'with' test [ with_var ] ':' suite with_stmt: 'with' test [ with_var ] ':' suite
with_var: 'as' expr with_var: 'as' expr
# NB compile.c makes sure that the default except clause is last # NB compile.c makes sure that the default except clause is last
except_clause: 'except' [test [',' test]] except_clause: 'except' [test [('as' | ',') test]]
suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
# Backward compatibility cruft to support: # Backward compatibility cruft to support:

View File

@ -930,7 +930,7 @@ class Transformer:
for i in range(3, len(nodelist), 3): for i in range(3, len(nodelist), 3):
node = nodelist[i] node = nodelist[i]
if node[0] == symbol.except_clause: if node[0] == symbol.except_clause:
# except_clause: 'except' [expr [',' expr]] */ # except_clause: 'except' [expr [(',' | 'as') expr]] */
if len(node) > 2: if len(node) > 2:
expr1 = self.com_node(node[2]) expr1 = self.com_node(node[2])
if len(node) > 4: if len(node) > 4:

View File

@ -600,7 +600,7 @@ hello world
def testTry(self): def testTry(self):
### try_stmt: 'try' ':' suite (except_clause ':' suite)+ ['else' ':' suite] ### try_stmt: 'try' ':' suite (except_clause ':' suite)+ ['else' ':' suite]
### | 'try' ':' suite 'finally' ':' suite ### | 'try' ':' suite 'finally' ':' suite
### except_clause: 'except' [expr [',' expr]] ### except_clause: 'except' [expr [('as' | ',') expr]]
try: try:
1/0 1/0
except ZeroDivisionError: except ZeroDivisionError:
@ -609,7 +609,7 @@ hello world
pass pass
try: 1/0 try: 1/0
except EOFError: pass except EOFError: pass
except TypeError, msg: pass except TypeError as msg: pass
except RuntimeError, msg: pass except RuntimeError, msg: pass
except: pass except: pass
else: pass else: pass

View File

@ -12,6 +12,10 @@ What's New in Python 2.6 alpha 1?
Core and builtins Core and builtins
----------------- -----------------
- except clauses may now be spelled either "except E, target:" or
"except E as target:". This is to provide forwards compatibility with
Python 3.0.
- Deprecate BaseException.message as per PEP 352. - Deprecate BaseException.message as per PEP 352.
- Bug #1303614: don't expose object's __dict__ when the dict is - Bug #1303614: don't expose object's __dict__ when the dict is

View File

@ -2765,7 +2765,7 @@ ast_for_for_stmt(struct compiling *c, const node *n)
static excepthandler_ty static excepthandler_ty
ast_for_except_clause(struct compiling *c, const node *exc, node *body) ast_for_except_clause(struct compiling *c, const node *exc, node *body)
{ {
/* except_clause: 'except' [test [',' test]] */ /* except_clause: 'except' [test [(',' | 'as') test]] */
REQ(exc, except_clause); REQ(exc, except_clause);
REQ(body, suite); REQ(body, suite);

View File

@ -931,7 +931,8 @@ static arc arcs_42_1[2] = {
{26, 2}, {26, 2},
{0, 1}, {0, 1},
}; };
static arc arcs_42_2[2] = { static arc arcs_42_2[3] = {
{78, 3},
{27, 3}, {27, 3},
{0, 2}, {0, 2},
}; };
@ -944,7 +945,7 @@ static arc arcs_42_4[1] = {
static state states_42[5] = { static state states_42[5] = {
{1, arcs_42_0}, {1, arcs_42_0},
{2, arcs_42_1}, {2, arcs_42_1},
{2, arcs_42_2}, {3, arcs_42_2},
{1, arcs_42_3}, {1, arcs_42_3},
{1, arcs_42_4}, {1, arcs_42_4},
}; };