Esempio n. 1
0
        protected AstNode GetAstNodesFromInput(string input)
        {
            var charStream = new AntlrInputStream(input);
            var lexer      = new QlLexer(charStream);
            var parser     = new QlParser(new CommonTokenStream(lexer));
            var visitor    = new AstCreator();

            return(visitor.Visit(parser.form()));
        }
Esempio n. 2
0
        public FormStatement BuildAst()
        {
            var dataStream = new AntlrInputStream(this.InputData);
            var lexer      = new QlLexer(dataStream);
            var parser     = new QlParser(new CommonTokenStream(lexer));
            var astCreator = new AstCreator();
            var astTree    = astCreator.Visit(parser.form());

            Console.WriteLine("Ql AST building done!");

            return(astTree.As <FormStatement>());
        }
Esempio n. 3
0
        public string Should_parse(string query)
        {
            var input             = new AntlrInputStream(query);
            var lexer             = new QlLexer(input);
            var commonTokenStream = new CommonTokenStream(lexer);
            var parser            = new QlParser(commonTokenStream);

            parser.AddErrorListener(new QlErrorListener());
            parser.BuildParseTree = true;
            IParseTree tree = parser.parse();

            var lis = new QlVisitor();

            return(lis.Visit(tree).ToString());
        }
Esempio n. 4
0
        private DomainId <T> BuildAstTree <T>(string definition) where T : IAstNode
        {
            var stream = new AntlrInputStream(definition);
            var lexer  = new QlLexer(stream);

            lexer.RemoveErrorListeners();
            lexer.AddErrorListener(new QlErrorListener());

            var tokens = new CommonTokenStream(lexer);

            var parser = new QlParser(tokens);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(new QlErrorListener());

            var tree = parser.questionnaire();

            var qlVisitor = new BuildAstVisitor(m_astFactory, m_domainItemLocator);

            return(qlVisitor.Visit(tree).To <T>(m_domainItemLocator));
        }
Esempio n. 5
0
        public IRecordSet Execute(string query, QlParameter[] parameters)
        {
            var input             = new AntlrInputStream(query);
            var lexer             = new QlLexer(input);
            var commonTokenStream = new CommonTokenStream(lexer);
            var parser            = new QlParser(commonTokenStream);

            parser.AddErrorListener(new QlErrorListener());
            parser.BuildParseTree = true;
            IParseTree tree = parser.parse();

            var lis  = new QlVisitor();
            var expr = lis.Visit(tree);

            var        evalVis = new ExpressionEvaluatorVisitor(_journal, _tx, parameters);
            var        res     = evalVis.Visit(expr);
            IRecordSet records = new RecordSet(res.Build().Rowids, _tx, _journal.Metadata);

            if (res.Columns != null)
            {
                records = records.Map(res.Columns);
            }
            return(records);
        }