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