/// <summary>
        /// 数字をパースします。これは<see cref="Parse(JsonScanner)" />の一部で使用されます。
        /// </summary>
        /// <param name="scanner">指定するスキャナ。</param>
        /// <returns>パースに成功した場合32ビット符号付き数字を返します。</returns>
        public static int ParseNumber(JsonScanner scanner)
        {
            scanner.Empty();

            scanner.CheckAddAdvance(IsSign);

            scanner.CheckAddAdvanceLoop(IsDigit);

            scanner.CheckAddAdvance(IsDecimalPoint);

            scanner.CheckAddAdvanceLoop(IsDigit);

            if (scanner.CheckAddAdvance(IsExponent))
            {
                scanner.CheckAddAdvance(IsSign);

                scanner.CheckAddAdvanceLoop(IsDigit);
            }

            try
            {
                return(int.Parse(scanner.Scan));
            }
            catch (FormatException)
            {
                throw new ArgumentMapParseException("bad format number", scanner.Itext.PositionInfo);
            }
            catch (OverflowException)
            {
                throw new ArgumentMapParseException("overflow number", scanner.Itext.PositionInfo);
            }
            catch (Exception)
            {
                throw new ArgumentMapParseException("unexpected error number", scanner.Itext.PositionInfo);
            }
        }