AjTalk.Compiler.Lexer.NextName C# (CSharp) Метод

NextName() приватный Метод

private NextName ( char firstchar ) : Token
firstchar char
Результат Token
        private Token NextName(char firstchar)
        {
            StringBuilder sb = new StringBuilder(10);
            sb.Append(firstchar);

            int ch;

            ch = this.NextChar();

            while (ch >= 0 && char.IsLetterOrDigit((char)ch))
            {
                sb.Append((char)ch);
                ch = this.NextChar();
            }

            if (ch >= 0 && ch == '.' && char.IsUpper(firstchar))
            {
                var peek = this.PeekChar();

                if (peek >= 0 && char.IsLetter((char)peek) && char.IsUpper((char)peek))
                {
                    sb.Append((char)ch);
                    return this.NextDottedName(sb.ToString());
                }

                this.PushChar(ch);
            }
            else if (ch >= 0 && ch == ':')
            {
                sb.Append((char)ch);
            }
            else
            {
                this.PushChar(ch);
            }

            Token token = new Token();
            token.Type = TokenType.Name;
            token.Value = sb.ToString();

            return token;
        }