Example #1
0
        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);
        }
Example #2
0
        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));
 }