Exemple #1
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public date(AltBot bot,
             User user,
             SubQuery query,
             Request request,
             Result result,
             XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
 }
Exemple #2
0
        public void xqderiveMst権限マスタList(String function, SubQuery <Mst権限マスタCB> subQuery, String operand, Object value)
        {
            assertObjectNotNull("subQuery<Mst権限マスタCB>", subQuery);
            Mst権限マスタCB cb = new Mst権限マスタCB(); cb.xsetupForDerivedReferrer(this); subQuery.Invoke(cb);
            String     subQueryPropertyName  = keep画面コード_QueryDerivedReferrer_Mst権限マスタList(cb.Query()); // for saving query-value.
            String     parameterPropertyName = keep画面コード_QueryDerivedReferrer_Mst権限マスタListParameter(value);

            registerQueryDerivedReferrer(function, cb.Query(), "画面コード", "画面コード", subQueryPropertyName, operand, value, parameterPropertyName);
        }
Exemple #3
0
        public void Update()
        {
            using (var context = DbContextFactory.GetDbContext())
            {
                //reset where
                context.From <Student>()
                .Where(a => a.Version == "12" && a.Id == 12)
                .Update(new Student()
                {
                    Version = "14",
                    Age     = 20,
                    Id      = 14
                });
                //param
                var      age  = 20;
                DateTime?time = null;
                var      sid  = 1;

                //subquery
                var subquery = new SubQuery <School>()
                               .Where(a => a.Id == sid)
                               .Select(s => s.Name);

                var row1 = context.From <Student>()
                           .Set(a => a.Age, a => a.Age + age)
                           .Set(a => a.Name, subquery)
                           .Set(a => a.CreateTime, time, time != null)
                           .Where(a => a.Id == 16)
                           .Update();

                //function
                context.From <Student>()
                .Set(a => a.Name, a => MysqlFun.REPLACE(a.Name, "a", "b"))
                .Where(a => a.Id == 14)
                .Update();

                //lock
                var student = context.From <Student>()
                              .Where(a => a.Id == 16)
                              .Single();
                var row2 = context.From <Student>()
                           .Set(a => a.Age, 80)
                           .Set(a => a.Version, Guid.NewGuid().ToString())
                           .Where(a => a.Id == 16 && a.Version == student.Version)
                           .Update();

                //entity
                var row3 = context.From <Student>()
                           .Filter(a => a.SchoolId)
                           .Update(new Student()
                {
                    Id         = 2,
                    CreateTime = DateTime.Now
                });
            }
        }
 public AIMLDictSubstFormatingTagHandler(AltBot bot,
                                         User user,
                                         SubQuery query,
                                         Request request,
                                         Result result,
                                         XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
     IsStarAtomically = true;
 }
Exemple #5
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="Proc">The Proc involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public root(AltBot bot,
             User user,
             SubQuery query,
             Request request,
             Result result,
             XmlNode templateNode, ParentProvider pp)
     : base(bot, user, query, request, result, templateNode)
 {
     GetTargetSettings = pp ?? (() => this.query.TargetSettings);
 }
Exemple #6
0
 public override SqlInfo[] ConvertToSql(Expression expression, int level, ConvertFlags flags)
 {
     return(SubQuery
            .ConvertToIndex(expression, level, flags)
            .Select(idx => new SqlInfo((idx.Members))
     {
         Sql = SubQuery.SelectQuery.Select.Columns[idx.Index]
     })
            .ToArray());
 }
Exemple #7
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public aimlexec(AltBot bot,
                 User user,
                 SubQuery query,
                 Request request,
                 Result result,
                 XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
     isRecursive = false;
 }
Exemple #8
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public think(AltBot bot,
              User user,
              SubQuery query,
              Request request,
              Result result,
              XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
     IsStarAtomically = false;
 }
Exemple #9
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public template(AltBot bot,
                 User user,
                 SubQuery query,
                 Request request,
                 Result result,
                 XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
     SelfProcessing = true;
 }
Exemple #10
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public cycrandom(AltBot bot,
                  User user,
                  SubQuery query,
                  Request request,
                  Result result,
                  XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
     //  this.isRecursive = false;
 }
Exemple #11
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public thatstar(AltBot bot,
                 User user,
                 SubQuery query,
                 Request request,
                 Result result,
                 XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode, 1)
 {
     StarDict = () => CurrentQuery.ThatStars;
 }
Exemple #12
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public sr(AltBot bot,
           User user,
           SubQuery query,
           Request request,
           Result result,
           XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
     IsDeterministic = false;
 }
Exemple #13
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public StarTagHandler(AltBot bot,
                       User user,
                       SubQuery query,
                       Request request,
                       Result result,
                       XmlNode templateNode, int idx)
     : base(bot, user, query, request, result, templateNode)
 {
     DefaultIndex = idx;
 }
Exemple #14
0
 public input(AltBot bot,
              User user,
              SubQuery query,
              Request request,
              Result result,
              XmlNode templateNode, int offset)
     : base(bot, user, query, request, result, templateNode, offset)
 {
     offetFrom = offset;
 }
Exemple #15
0
        private static void Main()
        {
            /*dotnet ef dbcontext Scaffold "Server=127.0.0.1,1433;Initial Catalog=AdventureWorks2017; \n
             * Persist Security Info=False;User ID=sa;Password=myNiceSQLPassword123;" Microsoft.EntityFrameworkCore.SqlServer -o Model*/

            //SelectQuery.Execute();
            //JoinQuery.Execute();
            //GroupByQuery.Execute();
            //OrderBy.Execute();
            SubQuery.Execute();
        }
Exemple #16
0
        /// <summary>
        /// Given a request containing user input, produces a result from the bot
        /// </summary>
        /// <param name="request">the request from the user</param>
        /// <returns>the result to be output to the user</returns>
        public Result Chat(Request request)
        {
            Result result = new Result(request.user, this, request);

            if (this.isAcceptingUserInput)
            {
                // Normalize the input
                AIMLLoader loader = new AIMLLoader(this);
                AIMLbot.Normalize.SplitIntoSentences splitter = new AIMLbot.Normalize.SplitIntoSentences(this);
                string[] rawSentences = splitter.Transform(request.rawInput);
                foreach (string sentence in rawSentences)
                {
                    result.InputSentences.Add(sentence);
                    string path = loader.generatePath(sentence, request.user.getLastBotOutput(), request.user.Topic, true);
                    result.NormalizedPaths.Add(path);
                }

                // grab the templates for the various sentences from the graphmaster
                foreach (string path in result.NormalizedPaths)
                {
                    Utils.SubQuery query = new SubQuery(path);
                    query.Template = this.Graphmaster.evaluate(path, query, request, MatchState.UserInput, new StringBuilder());
                    result.SubQueries.Add(query);
                }

                // process the templates into appropriate output
                foreach (SubQuery query in result.SubQueries)
                {
                    if (query.Template.Length > 0)
                    {
                        try {
                            XmlNode templateNode   = AIMLTagHandler.getNode(query.Template);
                            string  outputSentence = this.processNode(templateNode, query, request, result, request.user);
                            if (outputSentence.Length > 0)
                            {
                                result.OutputSentences.Add(outputSentence);
                            }
                        } catch (Exception e) {
                            this.writeToLog("WARNING! A problem was encountered when trying to process the input: " + request.rawInput + " with the template: \"" + query.Template + "\"");
                        }
                    }
                }
            }
            else
            {
                result.OutputSentences.Add(this.NotAcceptingUserInputMessage);
            }

            // populate the Result object
            result.Duration = DateTime.Now - request.StartedOn;
            request.user.addResult(result);

            return(result);
        }
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public lazyClosure(AltBot bot,
                    User user,
                    SubQuery query,
                    Request request,
                    Result result,
                    XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
     isRecursive = false;
     IsTraced    = true;
 }
Exemple #18
0
 public format(AltBot bot,
               User user,
               SubQuery query,
               Request request,
               Result result,
               XmlNode templateNode, Func <string, string> formatter, Func <string, string> formattereach)
     : base(bot, user, query, request, result, templateNode)
 {
     SFormatter  = formatter;
     SFormatterE = formattereach;
 }
Exemple #19
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public format(AltBot bot,
               User user,
               SubQuery query,
               Request request,
               Result result,
               XmlNode templateNode, Func <Unifiable, Unifiable> formatter, Func <Unifiable, Unifiable> formattereach)
     : base(bot, user, query, request, result, templateNode)
 {
     UFormatter  = formatter;
     UFormatterE = formattereach;
 }
Exemple #20
0
 public AIMLConstraintTagHandler(AltBot bot,
                                 User user,
                                 SubQuery query,
                                 Request request,
                                 Result result,
                                 XmlNode templateNode, int offset)
     : base(bot, user, query, request, result, templateNode)
 {
     offetFrom        = offset;
     IsStarAtomically = false;
 }
 public override bool WillMatch0(string word, SubQuery query)
 {
     foreach (Unifiable u in List)
     {
         if (u.WillMatch0(word, query))
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #22
0
        public void Other()
        {
            using (var context = DbContextFactory.GetDbContext())
            {
                //limit 0,10
                var students1 = context.From <Student>()
                                .Take(10)
                                .Select();

                //limit 10,20
                var students2 = context.From <Student>()
                                .Skip(10, 20)
                                .Select();

                //Calling functions in expressions is not recommended, but n-tier attribute access is supported
                var student3 = context.From <Student>()
                               .Where(a => a.CreateTime == DateTime.Now.Date)
                               .Select();

                //lock
                var students4 = context.From <Student>()
                                .With(LockType.FOR_UPADTE)
                                .Select();

                //exists1
                var flag1 = context.From <Student>()
                            .Where(a => a.Id > 50)
                            .Exists();

                //exists2
                var subquery = new SubQuery <School>()
                               .Where(a => a.Id >= 2)
                               .Select(a => a.Id);
                var flag2 = context.From <Student>()
                            .Where(a => Operator.Exists(subquery))
                            .Count();

                //count
                var count = context.From <Student>()
                            .Where(a => a.Id > 50)
                            .Count();

                //sum
                var sum = context.From <Student>()
                          .Where(a => a.Id > 50)
                          .Sum(s => s.Id * s.Age);

                //distinct
                var disinct = context.From <Student>()
                              .Distinct()
                              .Select(s => s.Name);
            }
        }
Exemple #23
0
        public SubQuery ToSubQuery()
        {
            DbCommand cmd  = PrepareCommand();
            SubQuery  expr = new SubQuery(this.db);

            expr.Sql = "(" + cmd.CommandText + ")";
            for (int i = 0; i < cmd.Parameters.Count; ++i)
            {
                expr.Parameters.Add('@' + cmd.Parameters[i].ParameterName.TrimStart(SqlQueryUtils.PrefixCharArray), new KeyValuePair <DbType, object>(cmd.Parameters[i].DbType, cmd.Parameters[i].Value));
            }
            return(expr);
        }
Exemple #24
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public recursiveVerbatum(XmlNode show, AltBot bot,
                          User user,
                          SubQuery query,
                          Request request,
                          Result result,
                          XmlNode templateNode, bool isRecurse)
     : base(bot, user, query, request, result, templateNode)
 {
     data = show;
     //RecurseResult = data;
     this.isRecursive = isRecurse;
 }
Exemple #25
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public srai_odd(AltBot bot,
                 User user,
                 SubQuery query,
                 Request request,
                 Result result,
                 XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
     throw bot.RaiseError("wrong SRAI!");
     mybot           = bot;
     IsDeterministic = false;
 }
        public override Unifiable Frozen(SubQuery subquery)
        {
            string str0 = ToValue(subquery);

            return(str0);

            /*
             * var u = new StringAppendableUnifiableImpl();
             * u.str = str0;
             * return u;
             */
        }
Exemple #27
0
        public override void Compile(Session session, ISchemaObject parentObject)
        {
            using (Scanner scanner = new Scanner(this.statement))
            {
                ParserDQL rdql = new ParserDQL(session, scanner);
                rdql.Read();
                this.ViewSubQuery    = rdql.XreadViewSubquery(this);
                base.queryExpression = this.ViewSubQuery.queryExpression;
                if (base.GetColumnCount() == 0)
                {
                    if (this.ColumnNames == null)
                    {
                        this.ColumnNames = this.ViewSubQuery.queryExpression.GetResultColumnNames();
                    }
                    if (this.ColumnNames.Length != this.ViewSubQuery.queryExpression.GetColumnCount())
                    {
                        throw Error.GetError(0x15d9, this.GetName().StatementName);
                    }
                    TableUtil.SetColumnsInSchemaTable(this, this.ColumnNames, base.queryExpression.GetColumnTypes(), base.queryExpression.GetColumnNullability());
                }
                OrderedHashSet <SubQuery> set = OrderedHashSet <SubQuery> .AddAll(OrderedHashSet <SubQuery> .Add(base.queryExpression.GetSubqueries(), this.ViewSubQuery), this.ViewSubQuery.GetExtraSubqueries());

                this.ViewSubqueries = new SubQuery[set.Size()];
                set.ToArray(this.ViewSubqueries);
                ArraySort.Sort <SubQuery>(this.ViewSubqueries, 0, this.ViewSubqueries.Length, this.ViewSubqueries[0]);
                foreach (SubQuery query in this.ViewSubqueries)
                {
                    if (query.ParentView == null)
                    {
                        query.ParentView = this;
                    }
                    query.PrepareTable(session);
                }
                this.ViewSubQuery.GetTable().view       = this;
                this.ViewSubQuery.GetTable().ColumnList = base.ColumnList;
                this._schemaObjectNames = rdql.compileContext.GetSchemaObjectNames();
                this._baseTable         = base.queryExpression.GetBaseTable();
            }
            if (this._baseTable != null)
            {
                switch (this._check)
                {
                case 0:
                case 2:
                    return;

                case 1:
                    base.queryExpression.GetCheckCondition();
                    return;
                }
                throw Error.RuntimeError(0xc9, "View");
            }
        }
Exemple #28
0
        public void MaterializeSubQueries(Session session)
        {
            HashSet <SubQuery> set = new HashSet <SubQuery>();

            for (int i = 0; i < this.Subqueries.Length; i++)
            {
                SubQuery item = this.Subqueries[i];
                if (set.Add(item) && !item.IsCorrelated())
                {
                    item.Materialise(session);
                }
            }
        }
Exemple #29
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="bot">The bot involved in this request</param>
 /// <param name="user">The user making the request</param>
 /// <param name="query">The query that originated this node</param>
 /// <param name="request">The request inputted into the system</param>
 /// <param name="result">The result to be passed to the user</param>
 /// <param name="templateNode">The node to be Processed</param>
 public verbatum(String show, AltBot bot,
                 User user,
                 SubQuery query,
                 Request request,
                 Result result,
                 XmlNode templateNode)
     : base(bot, user, query, request, result, templateNode)
 {
     data           = show;
     FinalResult    = data;
     isRecursive    = false;
     SelfProcessing = true;
 }
Exemple #30
0
        public override SqlInfo[] ConvertToSql(Expression?expression, int level, ConvertFlags flags)
        {
            expression = SequenceHelper.CorrectExpression(expression, this, Context);

            var indexes = SubQuery
                          .ConvertToIndex(expression, level, flags)
                          .ToArray();

            var result = indexes
                         .Select(idx => new SqlInfo(idx.MemberChain, idx.Index < 0 ? idx.Sql : SubQuery.SelectQuery.Select.Columns[idx.Index], idx.Index))
                         .ToArray();

            return(result);
        }
Exemple #31
0
        /// <summary>
        /// Builds and evaluates a sub query for the request given the specified path.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="sentence">The sentence.</param>
        /// <returns>The SubQuery.</returns>
        private SubQuery EvaluateSubQuery([NotNull] Request request, [NotNull] string sentence)
        {
            // Build out a query based on the path
            var query = new SubQuery();

            // Search the node tree for the template most closely matched to this request
            var evaluator = _chatEngine.RootNode.Evaluator;

            // Build out the template
            query.Template = evaluator.Evaluate(sentence,
                                              query,
                                              request,
                                              MatchState.UserInput,
                                              new StringBuilder());

            // Set the input from the sentence, leaving off the path portion
            var thatIndex = sentence.IndexOf("<that>", StringComparison.OrdinalIgnoreCase);
            if (thatIndex > 0)
            {
                sentence = sentence.Substring(0, thatIndex - 1);
            }
            query.InputText = sentence;

            return query;
        }
Exemple #32
0
        public SubQueryList GetSubQueries(string query, int position)
        {
            ISimpleHQLLexer syntax = GetLexer( query );
            int numericId = -1;
            List<SubQuery> subQueries = new List<SubQuery>();
            int depth = 0;
            int caretDepth = 0;
            IDictionary<int,SubQuery> level2SubQuery = new Dictionary<int,SubQuery>();
            SubQuery current = null;
            while ((numericId = syntax.NextTokenId()) != HqlLexer.EOF)
            {
                bool tokenAdded = false;
                if (numericId == HqlLexer.OPEN)
                {
                    depth++;
                    if (position > syntax.GetTokenOffset())
                    {
                        caretDepth = depth;
                    }
                    if (!level2SubQuery.ContainsKey(depth))
                    {
                        current = new SubQuery();
                        current.depth = depth;
                        current.startOffset = syntax.GetTokenOffset();
                        level2SubQuery[depth] = current;
                    }
                }
                else if (numericId == HqlLexer.CLOSE)
                {
                    SubQuery currentDepthQuery = null;
                    level2SubQuery.TryGetValue(depth,out currentDepthQuery);
                    // We check if we have a query on the current depth.
                    // If yes, we'll have to close it
                    if (currentDepthQuery != null && currentDepthQuery.depth == depth)
                    {
                        currentDepthQuery.endOffset = syntax.GetTokenOffset();
                        currentDepthQuery.tokenIds.Add(numericId);
                        currentDepthQuery.tokenText.Add(query.Substring(syntax.GetTokenOffset(), syntax.GetTokenLength()));
                        subQueries.Add(currentDepthQuery);
                        level2SubQuery.Remove(depth);
                        tokenAdded = true;
                    }
                    depth--;
                    if (position > syntax.GetTokenOffset()) {
                        caretDepth = depth;
                    }
                }
                switch (numericId)
                {
                    case HqlLexer.FROM:
                    case HqlLexer.UPDATE:
                    case HqlLexer.DELETE:
                    case HqlLexer.SELECT:
                        if (!level2SubQuery.ContainsKey(depth))
                        {
                            current = new SubQuery();
                            current.depth = depth;
                            current.startOffset = syntax.GetTokenOffset();
                            level2SubQuery[depth]= current;
                        }
                        current.tokenIds.Add(numericId);
                        current.tokenText.Add(query.Substring(syntax.GetTokenOffset(), syntax.GetTokenLength()));
                        break;
                    default:
                        if (!tokenAdded && level2SubQuery.ContainsKey(depth))
                        {
                            SubQuery sq = (SubQuery) level2SubQuery[depth];
                            int i = depth;
                            while (sq == null && i >= 0)
                            {
                                sq = (SubQuery) level2SubQuery[i--];
                            }
                            if (sq != null)
                            {
                                sq.tokenIds.Add(numericId);
                                sq.tokenText.Add(query.Substring(syntax.GetTokenOffset(), syntax.GetTokenLength()));
                            }
                        }
                        break;
                }
            }
            foreach (var sq in level2SubQuery.Values)
            {
                sq.endOffset = syntax.GetTokenOffset() + syntax.GetTokenLength();
                subQueries.Add(sq);
            }
            subQueries.Sort();

            SubQueryList sql = new SubQueryList();
            sql.caretDepth = caretDepth;
            sql.subQueries = subQueries;
            return sql;
        }