private SqlListNode <TNode> ParseList <TNode>(ITokenizer t, Func <ITokenizer, TNode> getItem) where TNode : class, ISqlNode { if (t.Peek().IsType(SqlTokenType.EndOfInput)) { return(null); } // <Item> ("," <Item>)* var list = new SqlListNode <TNode>(); while (true) { var item = getItem(t); if (item == null) { break; } list.Children.Add(item); if (t.NextIs(SqlTokenType.Symbol, ",", true)) { continue; } break; } if (list.Children.Count == 0) { return(null); } list.Location = list.Children[0].Location; return(list); }
public virtual ISqlNode VisitList <TNode>(SqlListNode <TNode> n) where TNode : class, ISqlNode { var list = VisitTypedNodeList(n.Children); return(n.Update(list)); }
public bool AssertIsNotNullOrEmpty <TNode>(ISqlNode parent, string name, SqlListNode <TNode> list) where TNode : class, ISqlNode { if (list == null || list.Count == 0) { return(AddError(parent, name, "List node may not be null or empty")); } return(true); }
public bool AssertIsNotEmpty <TNode>(ISqlNode parent, string name, SqlListNode <TNode> list) where TNode : class, ISqlNode { if (list.Count == 0) { return(AddError(parent, name, "List is empty")); } return(true); }
private ISqlNode VisitList <TNode>(SqlListNode <TNode> n, Action between) where TNode : class, ISqlNode { if (n.Children.Count == 0) { return(n); } Visit(n.Children[0]); for (int i = 1; i < n.Children.Count; i++) { between?.Invoke(); Visit(n.Children[i]); } return(n); }
public ISqlNode VisitList <TNode>(SqlListNode <TNode> n) where TNode : class, ISqlNode => VisitList(n, () => Append(", "));
public override ISqlNode VisitList <TNode>(SqlListNode <TNode> n) { return(base.VisitList(n)); }