예제 #1
0
        public void Test_queries_rule_can_parse_multiple(string query)
        {
            CmsqlParser parser = CreateParserForQuery(query);
            IParseTree  tree   = parser.queries();

            ParseTreePattern pattern = parser.CompileParseTreePattern(
                "<query> <TERMINATOR> <query> <TERMINATOR> <query> <EOF>",
                CmsqlParser.RULE_queries);
            ParseTreeMatch match = pattern.Match(tree);

            match.Succeeded.Should().BeTrue();
        }
예제 #2
0
        public void Test_query_rule_can_parse_query_with_where_clause(string query)
        {
            CmsqlParser parser = CreateParserForQuery(query);
            IParseTree  tree   = parser.query();

            ParseTreePattern pattern = parser.CompileParseTreePattern(
                "<selectClause> <fromClause> <whereClause>",
                CmsqlParser.RULE_query);

            ParseTreeMatch match = pattern.Match(tree);

            match.Succeeded.Should().BeTrue();
        }
예제 #3
0
        public void Test_conditon_rule_can_parse_not_equals_condition(string query)
        {
            CmsqlParser parser = CreateParserForQuery(query);
            IParseTree  tree   = parser.condition();

            ParseTreePattern pattern = parser.CompileParseTreePattern(
                "<IDENTIFIER> <NOTEQUALS> <LITERAL>",
                CmsqlParser.RULE_condition);

            ParseTreeMatch match = pattern.Match(tree);

            match.Succeeded.Should().BeTrue();
        }
예제 #4
0
        public void Test_expression_rule_can_parse_condition(string query)
        {
            CmsqlParser parser = CreateParserForQuery(query);
            IParseTree  tree   = parser.expression();

            ParseTreePattern pattern = parser.CompileParseTreePattern(
                "<expression>",
                CmsqlParser.RULE_expression);

            ParseTreeMatch match = pattern.Match(tree);

            match.Succeeded.Should().BeTrue();
        }
예제 #5
0
        public void Test_selectClause_rule_can_parse_valid_identifier(string identifier)
        {
            CmsqlParser parser = CreateParserForQuery($"select {identifier}");
            IParseTree  tree   = parser.selectClause();

            ParseTreePattern pattern = parser.CompileParseTreePattern(
                "<SELECT> <IDENTIFIER>",
                CmsqlParser.RULE_selectClause);

            ParseTreeMatch match = pattern.Match(tree);

            match.Succeeded.Should().BeTrue();
        }
예제 #6
0
 public static void Debug(ParseTreePattern parseTree, Parser parser, [CallerMemberName] string memberName = "")
 {
     DefaultErrorListener.Logger.Debug($"[{DateTime.Now.ToString("G")}] @{memberName} {parseTree.PatternTree.ToStringTree()}");
 }