/// <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); } }