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); }
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); }
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); }