Glob.Scanner.ScanToken C# (CSharp) Method

ScanToken() private method

private ScanToken ( ) : TokenKind
return TokenKind
        private TokenKind ScanToken()
        {
            if(this._currentCharacter == -1)
                return TokenKind.EOT;

            var current = (char) _currentCharacter;

            if (char.IsLetter(current))
            {
                if (this.PeekChar() == ':')
                {
                    TakeIt(); // letter
                    TakeIt(); // :
                    return TokenKind.WindowsRoot;
                }

                return TakeIdentifier();
            }

            if (IsNumeric(current))
            {
                return TakeIdentifier();
            }

            switch (this._currentCharacter)
            {
                case '*':
                    this.TakeIt();
                    if (this._currentCharacter == '*')
                    {
                        this.TakeIt();
                        return TokenKind.DirectoryWildcard;
                    }

                    return TokenKind.Wildcard;
                case '?':
                    this.TakeIt();
                    return TokenKind.CharacterWildcard;

                case '!':
                    this.TakeIt();
                    return TokenKind.CharacterSetInvert;

                case '[':
                    this.TakeIt();
                    return TokenKind.CharacterSetStart;

                case ']':
                    this.TakeIt();
                    return TokenKind.CharacterSetEnd;

                case '{':
                    this.TakeIt();
                    return TokenKind.LiteralSetStart;

                case ',':
                    this.TakeIt();
                    return TokenKind.LiteralSetSeperator;

                case '}':
                    this.TakeIt();
                    return TokenKind.LiteralSetEnd;

                case '/':
                case '\\':
                    this.TakeIt();
                    return TokenKind.PathSeperator;

                default:
                    throw new Exception("Unable to scan for next token. Stuck on '" + (char)this._currentCharacter + "'");
            }
        }