private QueryToken ReadToken()
        {
            char           ch    = this.SkipSpaces(this.curChar);
            QueryTokenType type  = QueryTokenType.Error;
            int            start = this.pos;

            switch (ch)
            {
            case '\0':
                type = QueryTokenType.None;
                break;

            case '\"':
            case '\'':
                type = this.SkipString(ch);
                if (type != QueryTokenType.Error)
                {
                    // Don't include quotes in the string token
                    return(new QueryToken(type, start + 1, this.pos - start - 2));
                }
                break;

            case '-':
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                type = this.SkipNumber(ch);
                break;

            default:
                if (QueryTokenizer.IsIdentifierStart(ch))
                {
                    type = this.SkipIdentifier();
                }
                break;
            }

            return(new QueryToken(type, start, this.pos - start));
        }
 private static bool IsIdentifier(char ch)
 {
     return(ch == '-' || QueryTokenizer.IsIdentifierStart(ch) || char.IsDigit(ch));
 }