コード例 #1
0
ファイル: Parser.cs プロジェクト: tnachen/ironruby
        //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;
        }
コード例 #2
0
ファイル: Parser.cs プロジェクト: bdoot/IronLanguages
        //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;
        }
コード例 #3
0
ファイル: Parser.cs プロジェクト: FabioNascimento/DICommander
 //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;
 }