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:main.SnapSubset.java

License:Open Source License

private static void analyze(String code) {
    // lexer/*  ww w  . j  a v a2  s  . c  o  m*/
    SnapGrammarLexer lexer = new SnapGrammarLexer(new ANTLRInputStream(code));

    // tokens
    CommonTokenStream tokens = new CommonTokenStream(lexer);

    // parser
    SnapGrammarParser parser = new SnapGrammarParser(tokens);

    // entry point
    Jsnap_codeContext context = parser.jsnap_code();

    // walk the tree
    SnapTreeWalker walker = new SnapTreeWalker();
    SnapGrammarListener listener = new WalkListener();
    walker.walk(listener, context);
}

From source file:mantra.Tool.java

License:BSD License

public Pair<ParseTree, Parser> parseMantraFile(String fileName) throws IOException {
    ANTLRInputStream input = new ANTLRFileStream(fileName);
    MantraLexer lexer = new MantraLexer(input);
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    MantraParser parser = new MantraParser(tokens);
    ParserRuleContext tree = parser.compilationUnit();
    tree.inspect(parser);/*from   w ww  .ja  v  a2  s. c o  m*/
    return new Pair<ParseTree, Parser>(tree, parser);
}

From source file:master.model.Function.java

License:Open Source License

@Override
public void initAndValidate() throws Exception {
    if (getID() == null || getID().isEmpty())
        throw new IllegalArgumentException("Functions must have an ID"
                + " specified, as this is used to identify functions" + " in expressions.");

    paramNames = new ArrayList<>();
    if (paramsInput.get() != null)
        paramNames.addAll(Arrays.asList(paramsInput.get().trim().split(" +")));

    // Parse function expression
    ANTLRInputStream input = new ANTLRInputStream(valueInput.get());

    // Custom parse/lexer error listener
    BaseErrorListener errorListener = new BaseErrorListener() {
        @Override/* w ww . ja va 2  s  .co m*/
        public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line,
                int charPositionInLine, String msg, RecognitionException e) {
            throw new RuntimeException("Error parsing character " + charPositionInLine + " of line " + line
                    + " of MASTER expression function: " + msg);
        }
    };

    MASTERGrammarLexer lexer = new MASTERGrammarLexer(input);
    lexer.removeErrorListeners();
    lexer.addErrorListener(errorListener);

    CommonTokenStream tokens = new CommonTokenStream(lexer);

    MASTERGrammarParser parser = new MASTERGrammarParser(tokens);
    parser.removeErrorListeners();
    parser.addErrorListener(errorListener);

    parseTree = parser.expression();
}

From source file:master.model.Predicate.java

License:Open Source License

/**
 * Determine whether the predicate equation holds for a particular set
 * of variable values.//from   ww w.  j  av  a2s .co  m
 * 
 * @param scalarVarNames
 * @param scalarVarVals
 * @param vectorVarNames
 * @param vectorVarVals
 * @param functionMap
 * @return true if the predicate holds, false otherwise.
 */
public boolean isTrue(List<String> scalarVarNames, int[] scalarVarVals, List<String> vectorVarNames,
        List<Double[]> vectorVarVals, Map<String, Function> functionMap) {

    if (visitor == null) {
        // Parse predicate expression
        ANTLRInputStream input = new ANTLRInputStream(expInput.get());

        // Custom parse/lexer error listener
        BaseErrorListener errorListener = new BaseErrorListener() {
            @Override
            public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line,
                    int charPositionInLine, String msg, RecognitionException e) {
                throw new RuntimeException("Error parsing character " + charPositionInLine + " on line " + +line
                        + " of MASTER predicate expression: " + msg);
            }
        };

        MASTERGrammarLexer lexer = new MASTERGrammarLexer(input);
        lexer.removeErrorListeners();
        lexer.addErrorListener(errorListener);

        CommonTokenStream tokens = new CommonTokenStream(lexer);

        MASTERGrammarParser parser = new MASTERGrammarParser(tokens);
        parser.removeErrorListeners();
        parser.addErrorListener(errorListener);

        ParseTree parseTree = parser.expression();
        visitor = new ExpressionEvaluator(parseTree, scalarVarNames, functionMap);
    }
    for (int i = 0; i < vectorVarNames.size(); i++)
        visitor.setVectorVar(vectorVarNames.get(i), vectorVarVals.get(i));

    for (Double el : visitor.evaluate(scalarVarVals)) {
        if (el < 1.0)
            return false;
    }

    return true;
}

From source file:master.model.RateMultiplier.java

License:Open Source License

/**
 * Evaluate rate multiplier expression for the given variable values.
 * //from   w  ww  .j  a va  2  s  .c  o  m
 * @param scalarVarNames  Names of scalar variables in expression
 * @param scalarVarVals   Values of scalar variables in expression
 * @param vectorVarNames  Names of vector variables in expression
 * @param vectorVarVals   Values of vector variables in expression
 * @param functions
 * @return result of evaluating the expression
 */
public double evaluate(List<String> scalarVarNames, int[] scalarVarVals, List<String> vectorVarNames,
        List<Double[]> vectorVarVals, Map<String, Function> functions) {
    if (visitor == null) {
        // Parse predicate expression
        ANTLRInputStream input = new ANTLRInputStream(expInput.get());
        MASTERGrammarLexer lexer = new MASTERGrammarLexer(input);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        MASTERGrammarParser parser = new MASTERGrammarParser(tokens);
        ParseTree parseTree = parser.expression();
        visitor = new ExpressionEvaluator(parseTree, scalarVarNames, functions);
    }

    for (int i = 0; i < vectorVarNames.size(); i++)
        visitor.setVectorVar(vectorVarNames.get(i), vectorVarVals.get(i));

    Double[] res = visitor.evaluate(scalarVarVals);
    if (res.length != 1) {
        throw new IllegalArgumentException("Reaction rate multiplier must be scalar!");
    }

    return res[0];
}

From source file:master.PopulationFunctionFromMaster.java

License:Open Source License

@Override
public void initAndValidate() throws Exception {

    // Set up trajectory simulation inputs

    traj = new Trajectory();

    traj.setInputValue("simulationTime", simulationTimeInput.get());
    traj.setInputValue("nSamples", nSamplesInput.get());
    traj.setInputValue("seed", seedInput.get());
    traj.setInputValue("stepper", stepperInput.get());
    traj.setInputValue("verbosity", verbosityInput.get());
    traj.setInputValue("model", modelInput.get());
    traj.setInputValue("initialState", initialStateInput.get());

    for (PopulationEndCondition endCondition : endConditionsInput.get())
        traj.setInputValue("populationEndCondition", endCondition);

    for (PostSimCondition postSimCondition : postSimConditionsInput.get())
        traj.setInputValue("postSimCondition", postSimCondition);

    for (TrajectoryOutput output : outputsInput.get())
        traj.setInputValue("output", output);

    traj.initAndValidate();/*from  www. j  ava 2  s.c o  m*/

    // Build parse tree from of population size expression
    ANTLRInputStream input = new ANTLRInputStream(popSizeExpressionInput.get());
    PFExpressionLexer lexer = new PFExpressionLexer(input);
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    PFExpressionParser parser = new PFExpressionParser(tokens);
    expressionParseTree = parser.start();

    // Visitor for interpreting population size expression
    expressionVisitor = new PFEVisitor();

    // Perform the simulation, calculate intensities etc
    prepare();

}

From source file:master.utilities.PopulationFunctionFromJSON.java

License:Open Source License

@Override
public void initAndValidate() throws Exception {

    // Read in JSON file:
    ObjectMapper mapper = new ObjectMapper();
    JsonNode rootNode = mapper.readTree(new FileInputStream(fileNameInput.get()));

    JsonNode trajRootNode;/*from  w  w  w.jav a  2 s .  com*/
    if (rootNode.has("trajectories"))
        trajRootNode = rootNode.get("trajectories").get(trajNumInput.get());
    else
        trajRootNode = rootNode;

    // Read in times
    times = new Double[trajRootNode.get("t").size()];
    for (int i = 0; i < times.length; i++)
        times[i] = trajRootNode.get("t").get(i).asDouble();

    // Build AST of population size expression
    ANTLRInputStream input = new ANTLRInputStream(popSizeExpressionInput.get());
    PFExpressionLexer lexer = new PFExpressionLexer(input);
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    PFExpressionParser parser = new PFExpressionParser(tokens);
    ParseTree tree = parser.start();

    // Calculate population sizes
    PFEJSONVisitor visitor = new PFEJSONVisitor(trajRootNode);
    popSizes = visitor.visit(tree);

    // Numerically integrate to get intensities:
    //        intensities = new Double[times.length];
    //        intensities[times.length-1] = 0.0;
    //        for (int i=times.length-1; i>0; i--) {
    //            intensities[i-1] = intensities[i]
    //                    + (times[i]-times[i-1])/popSizes[i-1];
    //        }

    // Find peak population size
    peakIdx = -1;
    double peakVal = 0.0;
    for (int i = 0; i < times.length; i++) {
        if (popSizes[i] > peakVal) {
            peakIdx = i;
            peakVal = popSizes[i];
        }
    }

    // Numerically integrate intensities from peak population size
    intensities = new Double[times.length];
    intensities[peakIdx] = 0.0;
    for (int i = peakIdx; i > 0; i--) {
        intensities[i - 1] = intensities[i] + (times[i] - times[i - 1]) / popSizes[i - 1];
    }
    for (int i = peakIdx; i < times.length - 1; i++) {
        intensities[i + 1] = intensities[i] + (times[i] - times[i + 1]) / popSizes[i];
    }

    // Copy to reversed intensities array needed for binary search
    intensitiesRev = new Double[times.length];
    for (int i = 0; i < times.length / 2; i++) {
        int j = times.length - 1 - i;
        intensitiesRev[i] = intensities[j];
        intensitiesRev[j] = intensities[i];
    }
    if (times.length % 2 > 0)
        intensitiesRev[times.length / 2] = intensities[times.length / 2];
}

From source file:mbtarranger.languages.arrange.Glue.java

License:Open Source License

protected static <T_Pass extends ParseTreeListener> T_Pass extractSinglePass(File osPath, Class<T_Pass> cls) {
    ArrangeLexer lexer;/*w ww  .  j  a v a2  s  .  c  o  m*/
    try {
        lexer = new ArrangeLexer(new ANTLRFileStream(osPath.getAbsolutePath()));

        lexer.removeErrorListeners();
        ErrorListener errListener = new ErrorListener(osPath);
        lexer.addErrorListener(errListener);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        ArrangeParser parser = new ArrangeParser(tokens);
        parser.setBuildParseTree(true);
        parser.removeErrorListeners();
        parser.addErrorListener(errListener);
        T_Pass pass1;
        try {
            pass1 = cls.newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            throw new MbtArrangerRuntimeException("misdesigned generics using reflection to type instantiation",
                    e);
        }
        parser.setBuildParseTree(true);
        parser.addParseListener(pass1);
        try {
            parser.root();
        } catch (NullPointerException nulex) {
            throw new MbtArrangerRuntimeException(
                    /*
                     * NullPointerExceptions caught here mean, that the parser needs
                     * additional logic to handle grammar robustly
                     */
                    "ARRANGE parser failed", nulex);
        }
        return pass1;
    } catch (IOException e1) {
        throw new MbtArrangerRuntimeException(e1);
    }
}

From source file:mbtarranger.languages.arrange.Glue.java

License:Open Source License

protected static <T_Pass extends ParseTreeVisitor<AST<ParserRuleContext>>> T_Pass extractSinglePassVisiting(
        File osPath, Class<T_Pass> cls) {
    ArrangeLexer lexer;//from   www .j  a v a  2  s.  c  om
    try {
        lexer = new ArrangeLexer(new ANTLRFileStream(osPath.getAbsolutePath()));

        lexer.removeErrorListeners();
        ErrorListener errListener = new ErrorListener(osPath);
        lexer.addErrorListener(errListener);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        ArrangeParser parser = new ArrangeParser(tokens);
        parser.setBuildParseTree(true);
        parser.removeErrorListeners();
        parser.addErrorListener(errListener);
        T_Pass pass1;
        try {
            pass1 = cls.newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            throw new MbtArrangerRuntimeException("misdesigned generics using reflection to type instantiation",
                    e);
        }
        parser.setBuildParseTree(true);
        try {
            ParseTree tree = parser.root();
            pass1.visit(tree);
        } catch (NullPointerException nulex) {
            throw new MbtArrangerRuntimeException(
                    /*
                     * NullPointerExceptions caught here mean, that the parser needs
                     * additional logic to handle grammar robustly
                     */
                    "ARRANGE parser failed", nulex);
        }
        return pass1;
    } catch (IOException e1) {
        throw new MbtArrangerRuntimeException(e1);
    }
}

From source file:mbtarranger.languages.dot.Glue.java

License:Open Source License

protected static <T_Pass extends ParseTreeVisitor<AST>> T_Pass extractSinglePassVisiting(File osPath,
        Class<T_Pass> cls) throws IOException, RecognitionException, MbtArrangerException {
    DotLexer lexer;/*from w  ww  .j ava  2 s. com*/
    lexer = new DotLexer(new ANTLRFileStream(osPath.getAbsolutePath(), "UTF-8"/*"ANSI"*/));
    lexer.removeErrorListeners();
    ErrorListener errListener = new ErrorListener(osPath);
    lexer.addErrorListener(errListener);
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    DotParser parser = new DotParser(tokens);
    parser.setBuildParseTree(true);
    parser.removeErrorListeners();
    parser.addErrorListener(errListener);
    T_Pass pass1;
    try {
        pass1 = cls.newInstance();
    } catch (InstantiationException | IllegalAccessException e) {
        throw new MbtArrangerException("misdesigned generics using reflection to type instantiation", e);
    }
    parser.setBuildParseTree(true);
    try {
        ParseTree tree = parser.root();
        pass1.visit(tree);
    } catch (NullPointerException nulex) {
        throw new MbtArrangerException(
                /* NullPointerExceptions caught here mean, that the parser needs additional logic to handle grammar robustly */
                "ARRANGE parser failed", nulex);
    }
    return pass1;
}