public IQsiTreeNode Parse(QsiScript script, CancellationToken cancellationToken = default) { var parser = MySQLUtility.CreateParser(script.Script, _version); var query = parser.query(); if (query.children[0] is not SimpleStatementContext simpleStatement) { return(null); } switch (simpleStatement.children[0]) { case SelectStatementContext selectStatement: return(TableVisitor.VisitSelectStatement(selectStatement)); case CreateStatementContext createStatement when createStatement.children[1] is CreateViewContext createView: return(TableVisitor.VisitCreateView(createView)); case DeleteStatementContext deleteStatement: return(ActionVisitor.VisitDeleteStatement(deleteStatement)); case ReplaceStatementContext replaceStatement: return(ActionVisitor.VisitReplaceStatement(replaceStatement)); case UpdateStatementContext updateStatement: return(ActionVisitor.VisitUpdateStatement(updateStatement)); case InsertStatementContext insertStatement: return(ActionVisitor.VisitInsertStatement(insertStatement)); default: throw TreeHelper.NotSupportedTree(simpleStatement.children[0]); } }
protected override (ITree Tree, string[] RuleNames) ParseAntlrTree(string input) { var parser = MySQLUtility.CreateParser(input, _version); return(parser.query(), parser.RuleNames); }