Exemplo n.º 1
0
 public ProfileStats getReport() {
   //		TokenStream input = parser.getTokenStream();
   //		for (int i=0; i<input.size()&& lastRealTokenTouchedInDecision !=null&&i<=
   // lastRealTokenTouchedInDecision.getTokenIndex(); i++) {
   //			Token t = input.get(i);
   //			if ( t.getChannel()!=Token.DEFAULT_CHANNEL ) {
   //				stats.numHiddenTokens++;
   //				stats.numHiddenCharsMatched += t.getText().length();
   //			}
   //		}
   stats.Version = Version;
   stats.name = parser.getClass().getName();
   stats.numUniqueRulesInvoked = uniqueRules.size();
   // stats.numCharsMatched = lastTokenConsumed.getStopIndex() + 1;
   return stats;
 }
Exemplo n.º 2
0
 public void enterRule(String grammarFileName, String ruleName) {
   //		System.out.println("enterRule "+grammarFileName+":"+ruleName);
   ruleLevel++;
   stats.numRuleInvocations++;
   uniqueRules.add(grammarFileName + ":" + ruleName);
   stats.maxRuleInvocationDepth = Math.max(stats.maxRuleInvocationDepth, ruleLevel);
   currentGrammarFileName.push(grammarFileName);
   currentRuleName.push(ruleName);
 }
Exemplo n.º 3
0
  public void terminate() {
    for (DecisionEvent e : decisionEvents) {
      // System.out.println("decision "+e.decision.decision+": k="+e.k);
      e.decision.avgk += e.k;
      stats.avgkPerDecisionEvent += e.k;
      if (e.backtracks) { // doesn't count gated syn preds on DFA edges
        stats.avgkPerBacktrackingDecisionEvent += e.k;
      }
    }
    stats.averageDecisionPercentBacktracks = 0.0f;
    for (DecisionDescriptor d : decisions.values()) {
      stats.numDecisionsCovered++;
      d.avgk /= (double) d.n;
      if (d.couldBacktrack) {
        stats.numDecisionsThatPotentiallyBacktrack++;
        float percentBacktracks = d.numBacktrackOccurrences / (float) d.n;
        // System.out.println("dec "+d.decision+" backtracks "+percentBacktracks*100+"%");
        stats.averageDecisionPercentBacktracks += percentBacktracks;
      }
      // ignore rules that backtrack along gated DFA edges
      if (d.numBacktrackOccurrences > 0) {
        stats.numDecisionsThatDoBacktrack++;
      }
    }
    stats.averageDecisionPercentBacktracks /= stats.numDecisionsThatPotentiallyBacktrack;
    stats.averageDecisionPercentBacktracks *= 100; // it's a percentage
    stats.avgkPerDecisionEvent /= stats.numDecisionEvents;
    stats.avgkPerBacktrackingDecisionEvent /= (double) stats.numBacktrackOccurrences;

    System.err.println(toString());
    System.err.println(getDecisionStatsDump());

    //		String stats = toNotifyString();
    //		try {
    //			Stats.writeReport(RUNTIME_STATS_FILENAME,stats);
    //		}
    //		catch (IOException ioe) {
    //			System.err.println(ioe);
    //			ioe.printStackTrace(System.err);
    //		}
  }