Esempio n. 1
0
        protected SqlColRefListItem ParseColListItem(SymbolPosition commapos)
        {
            var             expr     = ParseExpression();
            SqlMultiKeyWord modifier = ParseMultiKeyword("asc") ?? ParseMultiKeyword("desc");

            return(new SqlColRefListItem(commapos == null, commapos, expr, modifier));
        }
Esempio n. 2
0
 public SqlCommandClause(SqlMultiKeyWord prefix)
 {
     Prefix = prefix;
     if (Prefix != null)
     {
         Prefix.Parent = this;
     }
 }
Esempio n. 3
0
        private SqlSourceList ParseSourceList()
        {
            var            src1  = ParseSourceItem();
            List <SqlJoin> joins = new List <SqlJoin>();

            for (; ;)
            {
                SqlJoin join;
                if (IsSymbol(","))
                {
                    var cpos = SkipSymbol(",");
                    var src  = ParseSourceItem();
                    var cpre = new SqlMultiKeyWord(new SymbolPosition[] { cpos }, new string[] { "," });
                    join = new SqlJoin(cpre, src, null, null);
                }
                else
                {
                    SymbolPosition natpos = null;
                    if (IsKeyword("natural"))
                    {
                        natpos = SkipKeyword("natural");
                    }
                    var pre = ParseMultiKeyword("left", "join")
                              ?? ParseMultiKeyword("right", "join")
                              ?? ParseMultiKeyword("left", "outer", "join")
                              ?? ParseMultiKeyword("right", "outer", "join")
                              ?? ParseMultiKeyword("inner", "join")
                              ?? ParseMultiKeyword("outer", "join")
                              ?? ParseMultiKeyword("cross", "join")
                              ?? ParseMultiKeyword("join");
                    if (pre == null)
                    {
                        if (natpos != null)
                        {
                            GoBack(1);
                        }
                        break;
                    }
                    if (natpos != null)
                    {
                        pre.ClauseWords.Insert(0, "natural");
                        pre.ClauseWordsPos.Insert(0, natpos);
                    }
                    var            src   = ParseSourceItem();
                    SymbolPosition onpos = null;
                    SqlExpression  cond  = null;
                    if (IsKeyword("on"))
                    {
                        onpos = SkipKeyword("on");
                        cond  = ParseExpression();
                    }
                    join = new SqlJoin(pre, src, onpos, cond);
                }
                joins.Add(join);
            }
            return(new SqlSourceList(src1, joins));
        }
Esempio n. 4
0
 public SqlColRefListItem(bool isfirst, SymbolPosition commapos, SqlExpression argument, SqlMultiKeyWord modifier)
 {
     CommaPos        = commapos;
     Argument        = argument;
     IsFirst         = isfirst;
     Modifier        = modifier;
     Argument.Parent = this;
     if (Modifier != null)
     {
         Modifier.Parent = this;
     }
 }
Esempio n. 5
0
 public static bool Equals(SqlMultiKeyWord a, SqlMultiKeyWord b, SqlEqualityTestProps props)
 {
     if (a == null)
     {
         return(b == null);
     }
     if (b == null)
     {
         return(a == null);
     }
     return(a.ClauseWords.CreateDelimitedText(" ").ToLower() == b.ClauseWords.CreateDelimitedText(" ").ToLower());
 }
Esempio n. 6
0
 public SqlJoin(SqlMultiKeyWord joinPrefix, SqlSourceItem source, SymbolPosition onpos, SqlExpression cond)
 {
     JoinPrefix        = joinPrefix;
     Source            = source;
     OnPos             = onpos;
     Condition         = cond;
     JoinPrefix.Parent = this;
     Source.Parent     = this;
     if (Condition != null)
     {
         Condition.Parent = this;
     }
 }
Esempio n. 7
0
        private SqlCommandClause ParseFromClause(bool mustHaveFrom)
        {
            SqlMultiKeyWord prefix = null;

            if (mustHaveFrom)
            {
                prefix = ParseMultiKeyword("from");
                if (prefix == null)
                {
                    return(null);
                }
            }
            var list = ParseSourceList();

            return(new SqlFromClause(prefix, list));
        }
Esempio n. 8
0
 public SqlHavingClause(SqlMultiKeyWord prefix, SqlExpression cond)
     : base(prefix, cond)
 {
 }
Esempio n. 9
0
 public SqlConditionClause(SqlMultiKeyWord prefix, SqlExpression cond)
     : base(prefix)
 {
     Condition        = cond;
     Condition.Parent = this;
 }
Esempio n. 10
0
 public SqlGroupByClause(SqlMultiKeyWord prefix, SqlColRefList items)
     : base(prefix, items)
 {
 }
Esempio n. 11
0
 public SqlColumnListClause(SqlMultiKeyWord prefix, SqlColRefList items)
     : base(prefix)
 {
     Items        = items;
     Items.Parent = this;
 }
Esempio n. 12
0
 public SqlFromClause(SqlMultiKeyWord prefix, SqlSourceList source)
     : base(prefix)
 {
     Source        = source;
     Source.Parent = this;
 }
Esempio n. 13
0
        public bool EqualTo(SqlColRefList other, SqlEqualityTestProps props)
        {
            return(Items.EqualSequence(other.Items, (a, b) => a.Argument.FlatEqualTo(b.Argument, props) && SqlMultiKeyWord.Equals(a.Modifier, b.Modifier, props)));

            throw new NotImplementedError("DAE-00116");
        }