1 /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2 * Use of this file is governed by the BSD 3-clause license that
3 * can be found in the LICENSE.txt file in the project root.
6 #include "atn/ProfilingATNSimulator.h"
9 #include "atn/ParseInfo.h"
11 using namespace antlr4::atn;
13 ParseInfo::ParseInfo(ProfilingATNSimulator *atnSimulator) : _atnSimulator(atnSimulator) {
16 ParseInfo::~ParseInfo() {
19 std::vector<DecisionInfo> ParseInfo::getDecisionInfo() {
20 return _atnSimulator->getDecisionInfo();
23 std::vector<size_t> ParseInfo::getLLDecisions() {
24 std::vector<DecisionInfo> decisions = _atnSimulator->getDecisionInfo();
25 std::vector<size_t> LL;
26 for (size_t i = 0; i < decisions.size(); ++i) {
27 long long fallBack = decisions[i].LL_Fallback;
35 long long ParseInfo::getTotalTimeInPrediction() {
36 std::vector<DecisionInfo> decisions = _atnSimulator->getDecisionInfo();
38 for (size_t i = 0; i < decisions.size(); ++i) {
39 t += decisions[i].timeInPrediction;
44 long long ParseInfo::getTotalSLLLookaheadOps() {
45 std::vector<DecisionInfo> decisions = _atnSimulator->getDecisionInfo();
47 for (size_t i = 0; i < decisions.size(); ++i) {
48 k += decisions[i].SLL_TotalLook;
53 long long ParseInfo::getTotalLLLookaheadOps() {
54 std::vector<DecisionInfo> decisions = _atnSimulator->getDecisionInfo();
56 for (size_t i = 0; i < decisions.size(); i++) {
57 k += decisions[i].LL_TotalLook;
62 long long ParseInfo::getTotalSLLATNLookaheadOps() {
63 std::vector<DecisionInfo> decisions = _atnSimulator->getDecisionInfo();
65 for (size_t i = 0; i < decisions.size(); ++i) {
66 k += decisions[i].SLL_ATNTransitions;
71 long long ParseInfo::getTotalLLATNLookaheadOps() {
72 std::vector<DecisionInfo> decisions = _atnSimulator->getDecisionInfo();
74 for (size_t i = 0; i < decisions.size(); ++i) {
75 k += decisions[i].LL_ATNTransitions;
80 long long ParseInfo::getTotalATNLookaheadOps() {
81 std::vector<DecisionInfo> decisions = _atnSimulator->getDecisionInfo();
83 for (size_t i = 0; i < decisions.size(); ++i) {
84 k += decisions[i].SLL_ATNTransitions;
85 k += decisions[i].LL_ATNTransitions;
90 size_t ParseInfo::getDFASize() {
92 std::vector<dfa::DFA> &decisionToDFA = _atnSimulator->decisionToDFA;
93 for (size_t i = 0; i < decisionToDFA.size(); ++i) {
99 size_t ParseInfo::getDFASize(size_t decision) {
100 dfa::DFA &decisionToDFA = _atnSimulator->decisionToDFA[decision];
101 return decisionToDFA.states.size();