private static NumberToken ResolveNumber(LexerContext context) { var begin = context.GetIndex(); var builder = new StringBuilder(); if (NumberToken.IsDecimalNumberBegin(context)) { while (!context.IsEnded() && NumberToken.IsDecimalDigit(context)) { builder.Append(context.GetCurrentChar()); context.IncIndex(); } } else if (NumberToken.IsHexNumberBegin(context)) { context.IncIndex(); while (!context.IsEnded() && NumberToken.IsHexadecimalDigit(context)) { builder.Append(context.GetCurrentChar()); context.IncIndex(); } } else if (NumberToken.IsOctalNumberBegin(context)) { context.IncIndex(); while (!context.IsEnded() && NumberToken.IsOctalDigit(context)) { builder.Append(context.GetCurrentChar()); context.IncIndex(); } } else { context.IncIndex(); while (!context.IsEnded() && NumberToken.IsBinaryDigit(context)) { builder.Append(context.GetCurrentChar()); context.IncIndex(); } } return(new NumberToken(builder.ToString(), begin, context.GetIndex())); }