public IQsiTreeNode Parse(QsiScript script, CancellationToken cancellationToken = default) { var stream = new AntlrInputStream(script.Script); var lexer = new CqlLexerInternal(stream); var tokens = new CommonTokenStream(lexer); var parser = new CqlParserInternal(tokens); parser.AddErrorListener(new ErrorListener()); var statement = parser.cqlStatement().children[0]; switch (statement) { case SelectStatementContext selectStatement: return(TableVisitor.VisitSelectStatement(selectStatement)); case CreateMaterializedViewStatementContext createMaterializedViewStatement: return(DefinitionVisitor.VisitCreateMaterializedViewStatement(createMaterializedViewStatement)); case UseStatementContext useStatement: return(ActionVisitor.VisitUseStatement(useStatement)); case InsertStatementContext insertStatement: return(ActionVisitor.VisitInsertStatement(insertStatement)); case UpdateStatementContext updateStatement: return(ActionVisitor.VisitUpdateStatement(updateStatement)); case DeleteStatementContext deleteStatement: return(ActionVisitor.VisitDeleteStatement(deleteStatement)); default: throw TreeHelper.NotSupportedTree(statement); } }
protected override (ITree Tree, string[] RuleNames) ParseAntlrTree(string input) { var stream = new AntlrInputStream(input); var lexer = new CqlLexerInternal(stream); var tokens = new CommonTokenStream(lexer); var parser = new CqlParserInternal(tokens); parser.AddErrorListener(new ErrorListener()); return(parser.root(), parser.RuleNames); }