//解析区域代码内容 ({} 之间的内容)
        private void ParseStatement()
        {
            Token token = ReadToken();

            switch (token.Type)
            {
            case TokenType.Var:
                ParseVar();
                break;

            case TokenType.LeftBrace:
                ParseBlock();
                break;

            case TokenType.If:
                ParseIf();
                break;

            case TokenType.For:
                ParseFor();
                break;

            case TokenType.Foreach:
                ParseForeach();
                break;

            case TokenType.While:
                ParseWhile();
                break;

            case TokenType.Switch:
                ParseSwtich();
                break;

            case TokenType.Try:
                ParseTry();
                break;

            case TokenType.Throw:
                ParseThrow();
                break;

            case TokenType.Return:
                ParseReturn();
                break;

            case TokenType.Sharp:
                ParseSharp();
                break;

            case TokenType.Identifier:
            case TokenType.Increment:
            case TokenType.Decrement:
            case TokenType.Eval:
                ParseExpression();
                break;

            case TokenType.Break:
                m_scriptExecutable.AddScriptInstruction(new ScriptInstruction(Opcode.BREAK, new CodeObject(m_strBreviary, token.SourceLine)));
                break;

            case TokenType.Continue:
                m_scriptExecutable.AddScriptInstruction(new ScriptInstruction(Opcode.CONTINUE, new CodeObject(m_strBreviary, token.SourceLine)));
                break;

            case TokenType.Function:
                ParseFunction();
                break;

            case TokenType.SemiColon:
                break;

            default:
                throw new ParserException("不支持的语法 ", token);
            }
        }
        //解析区域代码内容 ({} 之间的内容)
        private void ParseStatement()
        {
            Token token = ReadToken();

            switch (token.Type)
            {
            case TokenType.Var:
            {
                string str = ReadIdentifier();
                m_scriptExecutable.AddScriptInstruction(new ScriptInstruction(Opcode.VAR, str));
                Token peek = PeekToken();
                if (peek.Type == TokenType.Assign)
                {
                    UndoToken();
                    ParseStatement();
                }
                else if (peek.Type == TokenType.Comma)
                {
                    while (PeekToken().Type == TokenType.Comma)
                    {
                        ReadToken();
                        m_scriptExecutable.AddScriptInstruction(new ScriptInstruction(Opcode.VAR, ReadIdentifier()));
                    }
                }
            }
            break;

            case TokenType.LeftBrace:
                ParseBlock();
                break;

            case TokenType.If:
                ParseIf();
                break;

            case TokenType.For:
                ParseFor();
                break;

            case TokenType.Foreach:
                ParseForeach();
                break;

            case TokenType.While:
                ParseWhile();
                break;

            case TokenType.Switch:
                ParseSwtich();
                break;

            case TokenType.Try:
                ParseTry();
                break;

            case TokenType.Throw:
                ParseThrow();
                break;

            case TokenType.Return:
            {
                Token peek = PeekToken();
                if (peek.Type == TokenType.RightBrace ||
                    peek.Type == TokenType.SemiColon ||
                    peek.Type == TokenType.Finished)
                {
                    m_scriptExecutable.AddScriptInstruction(new ScriptInstruction(Opcode.RET, new CodeScriptObject(m_script, null)));
                }
                else
                {
                    m_scriptExecutable.AddScriptInstruction(new ScriptInstruction(Opcode.RET, GetObject()));
                }
            }
            break;

            case TokenType.Identifier:
            case TokenType.Increment:
            case TokenType.Decrement:
            case TokenType.Eval:
                UndoToken();
                ParseExpression();
                break;

            case TokenType.Break:
                m_scriptExecutable.AddScriptInstruction(new ScriptInstruction(Opcode.BREAK, new CodeObject(m_strBreviary, token.SourceLine)));
                break;

            case TokenType.Continue:
                m_scriptExecutable.AddScriptInstruction(new ScriptInstruction(Opcode.CONTINUE, new CodeObject(m_strBreviary, token.SourceLine)));
                break;

            case TokenType.Function:
                ParseFunction();
                break;

            case TokenType.SemiColon:
                break;

            default:
                throw new ParserException("不支持的语法 ", token);
            }
        }