Exemple #1
0
        public override TokenList GetChildren()
        {
            TokenList children = new TokenList(asToken);

            children.Add(subquery);
            children.AddRange(joinKeywords);
            children.Add(joinExpression);
            return(children);
        }
Exemple #2
0
 void AddParsedToken(Token t)
 {
     // t.id = t.tokenType.ToString() + parsedTokens.Count.ToString();
     t.charBefore = GetCharAt(t.startOffset - 1);
     t.charAfter  = GetCharAt(t.startOffset + t.expressionLength);
     parsedTokens.Add(t);
 }
Exemple #3
0
 public void Visit(Token token)
 {
     if (types.Contains(token.tokenType))
     {
         tokens.Add(token);
     }
 }
Exemple #4
0
        public int Difference(TokenList list, out TokenList result, bool onlySignificantOnes = false, int max = 0)
        {
            result = new TokenList();

            bool compareStartOffsets = false;

            int added   = 0;
            int deleted = 0;
            int moved   = 0;

            foreach (Token tNew in list.tokens)
            {
                Token tOld = GetTokenById(tNew.id);
                if (tOld == null)
                {
                    tNew.status = TokenStatus.Added;
                    result.Add(tNew);
                    added++;
                }
                if (max > 0 && result.Count >= max)
                {
                    return(result.Count);
                }
            }
            foreach (Token tOld in tokens)
            {
                Token tNew = list.GetTokenById(tOld.id);
                if (tNew == null)
                {
                    tOld.status = TokenStatus.Removed;
                    result.AddIfNotExists(tOld);
                    deleted++;
                    if (max > 0 && result.Count >= max)
                    {
                        return(result.Count);
                    }
                }
                else if (compareStartOffsets && tNew.startOffset != tOld.startOffset)
                {
                    tNew.status = TokenStatus.Moved;
                    result.AddIfNotExists(tNew);
                    moved++;
                    if (max > 0 && result.Count >= max)
                    {
                        return(result.Count);
                    }
                }
            }


            if (result.Count > 0)
            {
                T.Debug("changed - added: " + added + " deleted: " + deleted + " moved:" + moved);
            }

            return(result.Count);
        }
Exemple #5
0
        public TokenList GetTokensWithin(Token tParent, TokenType[] types = null, string name = null)
        {
            TokenList result = new TokenList();

            foreach (int offset in tokensByOffset.Keys)
            {
                Token t = tokensByOffset[offset];
                if (tParent.TokenWithin(t, false) && (types == null || types.Contains(t.tokenType)) && (name == null || t.name == name))
                {
                    result.Add(t);
                }
            }
            return(result);
        }
Exemple #6
0
        public TokenList GetTokensWithin(Token tParent, int start, int end, TokenType[] types = null)
        {
            TokenList result = new TokenList();

            foreach (int offset in tokensByOffset.Keys)
            {
                Token t = tokensByOffset[offset];
                if (t.startOffset >= start && t.rightExtent <= end && tParent.TokenWithin(t, false) && (types == null || types.Contains(t.tokenType)))
                {
                    result.Add(t);
                }
            }
            return(result);
        }
Exemple #7
0
        public override TokenList GetChildren()
        {
            TokenList result = new TokenList();

            result.Add(asToken);
            result.Add(columnNameToken);
            result.Add(scalarSubquery);
            result.Add(columnAliasToken);
            result.Add(columnExpression);
            result.Add(tableAliasToken);
            return(result);
        }
Exemple #8
0
        public TokenList GetNextTokens(Token tOrigin, TokenType[] types = null, string[] names = null, int rightBoundary = -1, int maxToReturn = -1)
        {
            TokenList result = new TokenList();

            foreach (int offset in GetNextOffsets(tOrigin, rightBoundary))
            {
                Token t = tokensByOffset[offset];
                T.Assert(t.startOffset > tOrigin.startOffset && (rightBoundary == -1 || t.startOffset < rightBoundary));
                if ((types == null || types.Contains(t.tokenType)) && (names == null || names.Contains(t.name)))
                {
                    result.Add(t);
                }
                if (maxToReturn > 0 && result.Count >= maxToReturn)
                {
                    break;
                }
            }
            return(result);
        }
Exemple #9
0
        public TokenList GetPrevTokens(Token tOrigin, TokenType[] types = null, string[] names = null, int leftBoundary = -1, int maxToReturn = -1)
        {
            // returns tokens in order of descending offset position

            TokenList result = new TokenList();

            foreach (int offset in GetPrevOffsets(tOrigin, leftBoundary))
            {
                Token t = tokensByOffset[offset];
                T.Assert(t.startOffset < tOrigin.startOffset && (leftBoundary == -1 || t.startOffset >= leftBoundary));
                if ((types == null || types.Contains(t.tokenType)) && (names == null || names.Contains(t.name)))
                {
                    result.Add(t);
                }
                if (maxToReturn > 0 && result.Count >= maxToReturn)
                {
                    break;
                }
            }
            return(result);
        }
Exemple #10
0
        public override void Build()
        {
            TokenList fromTokens = GetTokensWithin();

            for (int i = 0; i < tables.tokens.Count - 1; i++)
            {
                Table     leftTable  = tables[i] as Table;
                Table     rightTable = tables[i + 1] as Table;
                TokenList joinTokens = fromTokens.GetNextTokens(leftTable, new[] { TokenType.Keyword }, null, rightTable.startOffset);
                string    joinType   = joinTokens.GetNames();
                Token     onToken    = fromTokens.GetNearestTokenAfter(rightTable, TokenType.Keyword, "on");
                if (joinType.Contains("join") && onToken != null)
                {
                    joinTokens.Add(onToken);
                    TokenList joinExpression = fromTokens.GetNextTokens(onToken,
                                                                        new[] { TokenType.Literal, TokenType.Operator, TokenType.Column }, null, rightExtent);
                    if (joinExpression.Count > 0)
                    {
                        leftTable.AddJoin(joinType, rightTable, joinTokens, joinExpression);
                    }
                }
            }
        }
Exemple #11
0
        public override TokenList GetChildren()
        {
            TokenList children = new TokenList();

            children.Add(select);
            children.Add(from);
            children.Add(where);
            children.Add(group);
            children.Add(order);
            children.Add(limit);

            if (children.Count == 0)
            {
                foreach (Query q in queries)
                {
                    children.Add(q);
                }
            }


            return(children);
        }