//except_clause: 'except' [expression [',' expression]] //2.6: except_clause: 'except' [expression [(',' or 'as') expression]] private TryStatementHandler ParseTryStmtHandler() { Eat(TokenKind.KeywordExcept); // If this function has an except block, then it can set the current exception. FunctionDefinition current = CurrentFunction; if (current != null) { current.CanSetSysExcInfo = true; } SourceLocation start = GetStart(); Expression test1 = null, test2 = null; if (PeekToken().Kind != TokenKind.Colon) { test1 = ParseExpression(); if (MaybeEat(TokenKind.Comma) || (Python26 && MaybeEat(Symbols.As))) { test2 = ParseExpression(); } } SourceLocation mid = GetEnd(); Statement body = ParseSuite(); TryStatementHandler ret = new TryStatementHandler(test1, test2, body); ret.Header = mid; ret.SetLoc(start, GetEnd()); return ret; }
//except_clause: 'except' [expression [',' expression]] //2.6: except_clause: 'except' [expression [(',' or 'as') expression]] private TryStatementHandler ParseTryStmtHandler() { Eat(TokenKind.KeywordExcept); // If this function has an except block, then it can set the current exception. FunctionDefinition current = CurrentFunction; if (current != null) { current.CanSetSysExcInfo = true; } var start = GetStart(); Expression test1 = null, test2 = null; if (PeekToken().Kind != TokenKind.Colon) { test1 = ParseExpression(); if (MaybeEat(TokenKind.Comma) || MaybeEat(TokenKind.KeywordAs)) { test2 = ParseExpression(); } } var mid = GetEnd(); Statement body = ParseSuite(); TryStatementHandler ret = new TryStatementHandler(test1, test2, body); ret.HeaderIndex = mid; ret.SetLoc(_globalParent, start, body.EndIndex); return ret; }
//except_clause: 'except' [test [',' test]] private TryStatementHandler ParseTryStmtHandler() { Eat(TokenKind.KeywordExcept); Location start = GetStart(); Expression test1 = null, test2 = null; if (PeekToken().Kind != TokenKind.Colon) { test1 = ParseTest(); if (MaybeEat(TokenKind.Comma)) { test2 = ParseTest(); } } Location mid = GetEnd(); Statement body = ParseSuite(); TryStatementHandler ret = new TryStatementHandler(test1, test2, body); ret.Header = mid; ret.SetLoc(GetExternal(), start, GetEnd()); return ret; }