Esempio n. 1
0
        public IQsiTreeNode Parse(QsiScript script, CancellationToken cancellationToken = default)
        {
            var stream = new AntlrInputStream(script.Script);
            var lexer  = new HanaLexerInternal(stream);
            var tokens = new CommonTokenStream(lexer);
            var parser = new HanaParserInternal(tokens);

            parser.AddErrorListener(new ErrorListener());

            var statement = parser.hanaStatement();

            switch (statement.children[0])
            {
            case DataManipulationStatementContext dataManipulationStatement:
                return(ParseDataManipulationStatement(dataManipulationStatement));

            case DataDefinitionStatementContext dataDefinitionStatement:
                return(ParseDataDefinitionStatementStatement(dataDefinitionStatement));

            case SessionManagementStatementContext sessionManagementStatement:
                return(ParseSessionManagementStatement(sessionManagementStatement));

            default:
                throw TreeHelper.NotSupportedTree(statement.children[0]);
            }
        }
Esempio n. 2
0
        protected override (ITree Tree, string[] RuleNames) ParseAntlrTree(string input)
        {
            var stream = new AntlrInputStream(input);
            var lexer  = new HanaLexerInternal(stream);
            var tokens = new CommonTokenStream(lexer);
            var parser = new HanaParserInternal(tokens);

            parser.AddErrorListener(new ErrorListener());

            return(parser.root(), parser.RuleNames);
        }