public override void EnterSqlStatement([NotNull] MySqlParser.SqlStatementContext context) { base.EnterSqlStatement(context); IsAdministrationStatement = context.administrationStatement() != null; IsDmlStatement = context.dmlStatement() != null; IsDdlStatement = context.ddlStatement() != null; IsPreparedStatement = context.preparedStatement() != null; IsReplicationStatement = context.replicationStatement() != null; IsTransactionStatement = context.transactionStatement() != null; IsUtilityStatement = context.utilityStatement() != null; }
public void Parse(string query, IParseTreeListener[] listeners) { ICharStream stream = CharStreams.fromstring(query); stream = new ToUpperStream(stream); ITokenSource lexer = new MySqlLexer(stream); ITokenStream tokens = new CommonTokenStream(lexer); var parser = new MySqlParser(tokens) { BuildParseTree = true, }; // both is possible, let's detect every type of sql this.context = parser.sqlStatement(); //var statement = parser.dmlStatement(); //var statement = parser.selectStatement(); // listener pattern RegisterListener(listeners); }