List of usage examples for org.antlr.v4.runtime CommonTokenStream CommonTokenStream
public CommonTokenStream(TokenSource tokenSource)
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; }