Beispiel #1
0
        public CmsqlQueryParseResult Parse(string query)
        {
            if (string.IsNullOrWhiteSpace(query))
            {
                throw new ArgumentException($"Parameter '{nameof(query)}' is null, empty or whitespace.");
            }

            CmsqlParser parser = CreateParser(query);

            parser.RemoveErrorListeners();

            CmsqlParserErrorListener errorListener = new CmsqlParserErrorListener();

            parser.AddErrorListener(errorListener);

            IParseTree     parseTree      = parser.queries();
            QueriesVisitor queriesVisitor = new QueriesVisitor();

            return(new CmsqlQueryParseResult
            {
                Errors = errorListener.ParseErrors,
                Queries = !errorListener.ParseErrors.Any()
                    ? queriesVisitor.Visit(parseTree)
                    : Enumerable.Empty <CmsqlQuery>()
            });
        }
Beispiel #2
0
        public void Test_can_parse_multiple_valid_queries_without_where_clause(string query)
        {
            CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery(query);

            CmsqlParser.QueriesContext parseTree = cmsqlParser.queries();

            QueriesVisitor           visitor = new QueriesVisitor();
            IEnumerable <CmsqlQuery> queries = visitor.VisitQueries(parseTree);

            queries.Should().NotBeNullOrEmpty();
            queries.Should().HaveCount(3);
        }