/** * Extract commands. * * @param database * the database * @param inputStream * the input stream * @return the list */ static List<String> extractCommands(SQLiteDatabase database, InputStream inputStream) { final List<String> result = new ArrayList<>(); final String input = IOUtils.readText(inputStream); JqlLexer lexer = new JqlLexer(CharStreams.fromString(input)); CommonTokenStream tokens = new CommonTokenStream(lexer); JqlParser parser = new JqlParser(tokens); ParserRuleContext parseContext = parser.parse(); ParseTreeWalker walk = new ParseTreeWalker(); walk.walk(new JqlBaseListener() { @Override public void enterSql_stmt(Sql_stmtContext ctx) { int start = ctx.getStart().getStartIndex(); int stop = ctx.getStop().getStopIndex() + 1; if (start == stop) return; result.add(input.substring(start, stop)); } }, parseContext); return result; }
/** * Prepare parser. * * @param jqlContext * the jql context * @param jql * the jql * @return the pair */ protected Pair<ParserRuleContext, CommonTokenStream> prepareParser(final JQLContext jqlContext, final String jql) { JqlLexer lexer = new JqlLexer(CharStreams.fromString(jql)); CommonTokenStream tokens = new CommonTokenStream(lexer); JqlParser parser = new JqlParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(new JQLBaseErrorListener() { @Override public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { AssertKripton.assertTrue(false, jqlContext.getContextDescription() + ": unespected char at pos %s of SQL '%s'", charPositionInLine, jql); } }); ParserRuleContext context = parser.parse(); return new Pair<>(context, tokens); }
/** * Prepare parser. * * @param jql the jql * @return the pair */ protected Pair<ParserRuleContext, CommonTokenStream> prepareParser(final String jql) { JqlLexer lexer = new JqlLexer(CharStreams.fromString(jql)); CommonTokenStream tokens = new CommonTokenStream(lexer); JqlParser parser = new JqlParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(new JQLBaseErrorListener() { @Override public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { KriptonAssert.assertTrue(false, "unespected char at pos %s of SQL '%s'", charPositionInLine, jql); } }); ParserRuleContext context = parser.parse(); return new Pair<>(context, tokens); }
JqlLexer lexer = new JqlLexer(CharStreams.fromString(jql)); CommonTokenStream tokens = new CommonTokenStream(lexer); JqlParser parser = new JqlParser(tokens);