Beispiel #1
0
        public override CmsqlQueryStartNode VisitFromClause(CmsqlParser.FromClauseContext context)
        {
            if (context.NUMBER() != null)
            {
                return(new CmsqlQueryStartNode
                {
                    StartNodeId = context.NUMBER().GetText(),
                    StartNodeType = CmsqlQueryStartNodeType.Id
                });
            }
            if (context.START() != null)
            {
                return(new CmsqlQueryStartNode
                {
                    StartNodeType = CmsqlQueryStartNodeType.Start
                });
            }
            if (context.ROOT() != null)
            {
                return(new CmsqlQueryStartNode
                {
                    StartNodeType = CmsqlQueryStartNodeType.Root
                });
            }

            return(null);
        }
Beispiel #2
0
        public void Test_can_parse_arbitrary_id_as_start_node(string id)
        {
            CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery($"from {id}");

            CmsqlParser.FromClauseContext parseTree = cmsqlParser.fromClause();

            FromClauseVisitor   visitor   = new FromClauseVisitor();
            CmsqlQueryStartNode startNode = visitor.VisitFromClause(parseTree);

            startNode.StartNodeId.ShouldBeEquivalentTo(id);
            startNode.StartNodeType.ShouldBeEquivalentTo(CmsqlQueryStartNodeType.Id);
        }
Beispiel #3
0
        public void Test_can_parse_root_as_start_node()
        {
            CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery("from root");

            CmsqlParser.FromClauseContext parseTree = cmsqlParser.fromClause();

            FromClauseVisitor   visitor   = new FromClauseVisitor();
            CmsqlQueryStartNode startNode = visitor.VisitFromClause(parseTree);

            startNode.StartNodeId.Should().BeNullOrEmpty();
            startNode.StartNodeType.ShouldBeEquivalentTo(CmsqlQueryStartNodeType.Root);
        }