Exemplo n.º 1
0
 public void AppendToClause(ParserToken t)
 {
     if (clauseStack.Count > 0)
     {
         SQLParserClause clause = clauseStack.Peek() as SQLParserClause;
         clause.Tokens.Enqueue(t);
     }
 }
Exemplo n.º 2
0
        public void PopClause()
        {
            if (clauseStack.Count > 0)
            {
                SQLParserClause clause    = clauseStack.Pop() as SQLParserClause;
                string          clauseStr = "";
                while (clause.Tokens.Count > 0)
                {
                    ParserToken t      = clause.Tokens.Dequeue() as ParserToken;
                    string      prestr = " ";
                    if (clauseStr.Length > 0)
                    {
                        char l = clauseStr[clauseStr.Length - 1];
                        char f = t.Word[0];
                        if (NoSeperators.IndexOf(l) >= 0 || NoSeperators.IndexOf(f) >= 0)
                        {
                            prestr = "";
                        }
                    }
                    else
                    {
                        prestr = "";
                    }
                    clauseStr += prestr + t.Word;
                }
                if (clauseStr.Trim().Length > 0)
                {
                    string prestr = " ";
                    if (tempClause.Length > 0)
                    {
                        char l = tempClause[tempClause.Length - 1];
                        char f = clauseStr[0];
                        if (NoSeperators.IndexOf(l) >= 0 || NoSeperators.IndexOf(f) >= 0)
                        {
                            prestr = "";
                        }
                    }
                    else
                    {
                        prestr = "";
                    }
                    tempClause += prestr + clauseStr;

                    prestr = " ";
                    if (parenthesesClause.Length > 0)
                    {
                        char l = parenthesesClause[parenthesesClause.Length - 1];
                        char f = clauseStr[0];
                        if (NoSeperators.IndexOf(l) >= 0 || NoSeperators.IndexOf(f) >= 0)
                        {
                            prestr = "";
                        }
                    }
                    else
                    {
                        prestr = "";
                    }
                    parenthesesClause += prestr + clauseStr;

                    prestr = " ";
                    if (expClause.Length > 0)
                    {
                        char l = expClause[expClause.Length - 1];
                        char f = clauseStr[0];
                        if (NoSeperators.IndexOf(l) >= 0 || NoSeperators.IndexOf(f) >= 0)
                        {
                            prestr = "";
                        }
                    }
                    else
                    {
                        prestr = "";
                    }
                    expClause += prestr + clauseStr;
                }
                if (clause.Type == SQLParserClauseType.PARENTHESES)
                {
                    parenthesesLevel--;
                    if (parenthesesLevel == 0 && tempLevel == 2 && parenthesesClause.Trim().Length > 0)
                    {
                        Parentheses.Add(parenthesesClause.Trim());
                    }
                }
                if (clause.Type == SQLParserClauseType.EXPRESSION)
                {
                    expressionLevel--;
                    if (expressionLevel == 0 && expClause.Trim().Length > 0)
                    {
                        if (tempLevel == 1)
                        {
                            Expressions.Add(expClause.Trim());
                        }
                        else if (tempLevel == 3)
                        {
                            if (groupByListLevel == 1)
                            {
                                GroupByExps.Add(expClause.Trim());
                            }
                            else if (orderByListLevel == 1)
                            {
                                OrderByExps.Add(expClause.Trim());
                            }
                        }
                    }
                }
                if (clause.Type == SQLParserClauseType.COUNT)
                {
                    tempLevel--;
                }
                if (clauseStack.Count <= 3)
                {
                    switch (clause.Type)
                    {
                    case SQLParserClauseType.SELECT:
                        SelectClause = tempClause.Trim();
                        break;

                    case SQLParserClauseType.FROM:
                        FromClause = tempClause.Trim();
                        break;
                    }
                }
                if (clauseStack.Count <= 7)
                {
                    switch (clause.Type)
                    {
                    case SQLParserClauseType.WHERE:
                        WhereClause = tempClause.Trim();
                        break;

                    case SQLParserClauseType.GROUPBYLIST:
                        groupByListLevel--;
                        GroupByList = tempClause.Trim();
                        break;

                    case SQLParserClauseType.HAVING:
                        HavingClause = tempClause.Trim();
                        break;

                    case SQLParserClauseType.ORDERBYLIST:
                        orderByListLevel--;
                        OrderByList = tempClause.Trim();
                        break;
                    }
                }
            }
        }
Exemplo n.º 3
0
        public void PushClause(object arg)
        {
            SQLParserClauseType clauseType = SQLParserClauseType.OTHER;

            if (arg != null)
            {
                clauseType = (SQLParserClauseType)arg;
            }

            if (clauseType == SQLParserClauseType.PARENTHESES)
            {
                if (parenthesesLevel == 0)
                {
                    parenthesesClause = "";
                }
                parenthesesLevel++;
            }
            if (clauseType == SQLParserClauseType.EXPRESSION)
            {
                if (expressionLevel == 0)
                {
                    expClause = "";
                }
                expressionLevel++;
            }
            if (clauseType == SQLParserClauseType.COUNT)
            {
                tempLevel++;
            }
            if (clauseStack.Count <= 3)
            {
                switch (clauseType)
                {
                case SQLParserClauseType.SELECT:
                    tempClause = "select";
                    break;

                case SQLParserClauseType.FROM:
                    tempClause = "";
                    break;
                }
            }
            if (clauseStack.Count <= 7)
            {
                switch (clauseType)
                {
                case SQLParserClauseType.WHERE:
                    tempClause = "";
                    break;

                case SQLParserClauseType.GROUPBYLIST:
                    groupByListLevel++;
                    tempClause = "";
                    break;

                case SQLParserClauseType.HAVING:
                    tempClause = "";
                    break;

                case SQLParserClauseType.ORDERBYLIST:
                    orderByListLevel++;
                    tempClause = "";
                    break;
                }
            }

            SQLParserClause clause = new SQLParserClause(clauseType);

            clauseStack.Push(clause);
        }