Example usage for org.antlr.v4.runtime CommonTokenStream CommonTokenStream

List of usage examples for org.antlr.v4.runtime CommonTokenStream CommonTokenStream

Introduction

In this page you can find the example usage for org.antlr.v4.runtime CommonTokenStream CommonTokenStream.

Prototype

public CommonTokenStream(TokenSource tokenSource) 

Source Link

Document

Constructs a new CommonTokenStream using the specified token source and the default token channel ( Token#DEFAULT_CHANNEL ).

Usage

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));
}