List of usage examples for org.antlr.v4.runtime CommonTokenStream CommonTokenStream
public CommonTokenStream(TokenSource tokenSource)
From source file:com.sqatntu.metrics.MetricCalculator.java
License:Open Source License
public MetricReport calculateMetrics(String sourceCode) { ANTLRInputStream stream = new ANTLRInputStream(sourceCode); JavaLexer lexer = new JavaLexer(stream); lexer.removeErrorListeners();//from w w w. j a va 2 s . c o m lexer.addErrorListener(throwingErrorListener); CommonTokenStream tokens = new CommonTokenStream(lexer); JavaParser parser = new JavaParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(throwingErrorListener); JavaParser.CompilationUnitContext tree = parser.compilationUnit(); // parse ParseTreeWalker walker = new ParseTreeWalker(); NumberOfMethodsListener numberOfMethodsListeners = new NumberOfMethodsListener(report); walker.walk(numberOfMethodsListeners, tree); NumberOfLinesListener numberOfLineListeners = new NumberOfLinesListener(report); walker.walk(numberOfLineListeners, tree); DepthOfConditionNestingListener ifDepthListener = new DepthOfConditionNestingListener(report); walker.walk(ifDepthListener, tree); AverageLengthOfIdentifierListener identifierLengthListener = new AverageLengthOfIdentifierListener(report); walker.walk(identifierLengthListener, tree); NumberOfAttributesListener attributesListener = new NumberOfAttributesListener(report); walker.walk(attributesListener, tree); return report; }
From source file:com.sqatntu.stylechecker.StyleChecker.java
License:Open Source License
private StyleReport check(CharStream stream, Configuration config) { JavaLexer lexer = new JavaLexer(stream); lexer.removeErrorListeners();//from w ww . ja v a 2 s . co m lexer.addErrorListener(throwingErrorListener); CommonTokenStream tokens = new CommonTokenStream(lexer); JavaParser parser = new JavaParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(throwingErrorListener); JavaParser.CompilationUnitContext tree = parser.compilationUnit(); // parse AllListeners allListeners = new AllListeners(config, styleReport); ParseTreeWalker walker = new ParseTreeWalker(); // create standard walker walker.walk(allListeners, tree); return styleReport; }
From source file:com.sri.ai.praise.demo.HOGMPanel.java
License:Open Source License
private boolean validRuleParse(List<String> problems, final String errorPrefix, final RuleEditor ruleEditor, boolean calculateErrorBeginIndex) { final AtomicBoolean result = new AtomicBoolean(true); // Ensure at least one token exists, i.e. could be all comments or whitespace. if (containsRules(ruleEditor.getText())) { ANTLRInputStream input = new ANTLRInputStream(ruleEditor.getText()); RuleLexer lexer = new RuleLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); RuleParser parser = new RuleParser(tokens); parser.removeErrorListeners();/*ww w . j a v a 2 s. co m*/ parser.addErrorListener(new BaseErrorListener() { @Override public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { // Highlight the first error found if (result.get()) { int[] startEnd = calculateLineOffsets(line, ruleEditor.getText()); int start = startEnd[0] + charPositionInLine; int end = startEnd[1]; ruleEditor.indicateErrorAtPosition(start, end); } problems.add(errorPrefix + msg); // Indicate a valid parse did not occur result.set(false); } }); parser.model(); } return result.get(); }
From source file:com.sri.ai.praise.demo.HOGMPanel.java
License:Open Source License
/** * Checks to ensure the passed in string is not whitespace or comments only. * @param string//w w w . ja v a2s . c om * @return */ private boolean containsRules(String string) { boolean result = true; ANTLRInputStream input = new ANTLRInputStream(string.trim()); RuleLexer lexer = new RuleLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); try { Token token = tokens.LT(1); if (token.getType() == Recognizer.EOF) { result = false; } } catch (RuntimeException ex) { // This is another problem, i.e. invalid token, so will let follow // on logic handle this when it tries to parse. } return result; }
From source file:com.sri.ai.praise.model.imports.church.TranslateChurchToModel.java
License:Open Source License
public Triple<String, Model, List<Expression>> translate(String churchProgramName, String churchProgram) { Triple<String, Model, List<Expression>> result = null; try {/*from w w w . j a v a2 s .c o m*/ ErrorListener lexerErrorListener = new ErrorListener("Lexer Error"); ErrorListener parseErrorListener = new ErrorListener("Parse Error"); ANTLRInputStream input = new ANTLRInputStream(churchProgram); ChurchLexer lexer = new ChurchLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); ChurchParser parser = new ChurchParser(tokens); lexer.removeErrorListeners(); parser.removeErrorListeners(); lexer.addErrorListener(lexerErrorListener); parser.addErrorListener(parseErrorListener); ParseTree tree = parser.parse(); boolean eof = parser.getInputStream().LA(1) == Recognizer.EOF; if (!lexerErrorListener.errorsDetected && !parseErrorListener.errorsDetected) { if (!eof) { System.err.println("Unable to parse the complete input model: " + input); } else { lexer.removeErrorListeners(); parser.removeErrorListeners(); ChurchToModelVisitor churchToModelVisitor = new ChurchToModelVisitor(); churchToModelVisitor.setChurchProgramInformation(churchProgramName, churchProgram); Expression hogmAndModelAndQueriesTuple = churchToModelVisitor.visit(tree); result = new Triple<String, Model, List<Expression>>( Tuple.get(hogmAndModelAndQueriesTuple, 0).getValue().toString(), new Model(Tuple.get(hogmAndModelAndQueriesTuple, 1), Collections.<String>emptySet()), ExtensionalSet.getElements(Tuple.get(hogmAndModelAndQueriesTuple, 2))); } } else { if (lexerErrorListener.errorsDetected) { throw new RuntimeException( lexerErrorListener.name + ":\n" + lexerErrorListener.errorMsgs.toString()); } if (parseErrorListener.errorsDetected) { throw new RuntimeException( parseErrorListener.name + ":\n" + parseErrorListener.errorMsgs.toString()); } } } catch (RecognitionException re) { re.printStackTrace(); throw re; } catch (ModelException me) { System.err.println("Model Errors"); for (ModelError error : me.getErrors()) { System.err.println(error); } me.printStackTrace(); throw me; } catch (RuntimeException re) { re.printStackTrace(); throw re; } return result; }
From source file:com.sri.ai.praise.sgsolver.demo.editor.HOGMCodeArea.java
License:Open Source License
private static StyleSpans<Collection<String>> computeHighlighting(String text) { StyleSpansBuilder<Collection<String>> spansBuilder = new StyleSpansBuilder<>(); int lastTokenEnd = 0; ANTLRInputStream input = new ANTLRInputStream(text); HOGMLexer lexer = new HOGMLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); tokens.fill();// w w w . j av a2 s. c om for (int i = 0; i < tokens.size(); i++) { Token t = tokens.get(i); if (t.getType() == Token.EOF) { break; } String styleClass; if (t.getType() == HOGMLexer.COMMENT || t.getType() == HOGMLexer.LINE_COMMENT) { styleClass = "hogmCodeComment"; } else if (HOGMTerminalSymbols.isTerminalSymbol(t.getText())) { styleClass = "hogmCodeKeyword"; } else { styleClass = "hogmCodeOther"; } int spacing = t.getStartIndex() - lastTokenEnd; if (spacing > 0) { spansBuilder.add(Collections.emptyList(), spacing); } int stylesize = (t.getStopIndex() - t.getStartIndex()) + 1; spansBuilder.add(Collections.singleton(styleClass), stylesize); lastTokenEnd = t.getStopIndex() + 1; } return spansBuilder.create(); }
From source file:com.srotya.sidewinder.core.sql.SQLDriver.java
License:Apache License
/** * @param sql/*from w w w . j a va 2 s. c o m*/ * @return */ public static SQLParserBaseListener parseSQL(String sql) { SQLLexer lexer = new SQLLexer(new ANTLRInputStream(sql)); CommonTokenStream tokens = new CommonTokenStream(lexer); SQLParser parser = new SQLParser(tokens); SqlContext select_stmt = parser.sql(); ParseTreeWalker walker = new ParseTreeWalker(); SQLParserBaseListener listener = new SQLParserBaseListener(); walker.walk(listener, select_stmt); return listener; }
From source file:com.streamsets.pipeline.lib.jdbc.parser.sql.ParseUtil.java
License:Apache License
public static ParserRuleContext getParserRuleContext(String queryString, int op) throws UnparseableSQLException { plsqlLexer lexer = new plsqlLexer(new ANTLRInputStream(queryString)); CommonTokenStream tokenStream = new CommonTokenStream(lexer); plsqlParser parser = new plsqlParser(tokenStream); ParserRuleContext context = null;//from ww w. j a v a 2 s .com switch (op) { case OracleCDCOperationCode.UPDATE_CODE: case OracleCDCOperationCode.SELECT_FOR_UPDATE_CODE: context = parser.update_statement(); break; case OracleCDCOperationCode.INSERT_CODE: context = parser.insert_statement(); break; case OracleCDCOperationCode.DELETE_CODE: context = parser.delete_statement(); break; case OracleCDCOperationCode.DDL_CODE: case OracleCDCOperationCode.COMMIT_CODE: case OracleCDCOperationCode.ROLLBACK_CODE: break; default: throw new UnparseableSQLException(queryString); } return context; }
From source file:com.streamsets.pipeline.lib.salesforce.ForceUtils.java
License:Apache License
public static SOQLParser.StatementContext getStatementContext(String query) { SOQLLexer lexer = new SOQLLexer(new ANTLRInputStream(query)); CommonTokenStream tokens = new CommonTokenStream(lexer); SOQLParser parser = new SOQLParser(tokens); parser.setErrorHandler(new BailErrorStrategy()); return parser.statement(); }
From source file:com.tbodt.jaml.JamlFile.java
License:Open Source License
private static JamlFile parse(CharStream input) throws JamlSyntaxException { JamlLexer lexer = new JamlLexer(input); TokenStream tokens = new CommonTokenStream(lexer); JamlParser parser = new JamlParser(tokens); final List<String> errors = new ArrayList<String>(); ANTLRErrorListener listener = new BaseErrorListener() { @Override/*from www . j ava 2s .co m*/ public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { errors.add(msg); } }; parser.addErrorListener(listener); lexer.addErrorListener(listener); ParseTree tree = parser.file(); if (!errors.isEmpty()) throw new JamlSyntaxException(errors); JamlParseVisitor visitor = new JamlParseVisitor(); return new JamlFile(visitor.visit(tree)); }