protected SqlColRefListItem ParseColListItem(SymbolPosition commapos) { var expr = ParseExpression(); SqlMultiKeyWord modifier = ParseMultiKeyword("asc") ?? ParseMultiKeyword("desc"); return(new SqlColRefListItem(commapos == null, commapos, expr, modifier)); }
public SqlCommandClause(SqlMultiKeyWord prefix) { Prefix = prefix; if (Prefix != null) { Prefix.Parent = this; } }
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)); }
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; } }
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()); }
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; } }
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)); }
public SqlHavingClause(SqlMultiKeyWord prefix, SqlExpression cond) : base(prefix, cond) { }
public SqlConditionClause(SqlMultiKeyWord prefix, SqlExpression cond) : base(prefix) { Condition = cond; Condition.Parent = this; }
public SqlGroupByClause(SqlMultiKeyWord prefix, SqlColRefList items) : base(prefix, items) { }
public SqlColumnListClause(SqlMultiKeyWord prefix, SqlColRefList items) : base(prefix) { Items = items; Items.Parent = this; }
public SqlFromClause(SqlMultiKeyWord prefix, SqlSourceList source) : base(prefix) { Source = source; Source.Parent = this; }
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"); }