#pragma once
#include "atn/ParserATNSimulator.h"
#include "atn/DecisionInfo.h"
namespace antlr4 {
namespace atn {
class ANTLR4CPP_PUBLIC ProfilingATNSimulator : public ParserATNSimulator {
public:
explicit ProfilingATNSimulator(Parser *parser);
virtual size_t adaptivePredict(TokenStream *input, size_t decision, ParserRuleContext *outerContext) override;
virtual std::vector<DecisionInfo> getDecisionInfo() const;
virtual dfa::DFAState* getCurrentState() const;
protected:
std::vector<DecisionInfo> _decisions;
int _sllStopIndex = 0;
int _llStopIndex = 0;
size_t _currentDecision = 0;
dfa::DFAState *_currentState;
size_t conflictingAltResolvedBySLL = 0;
virtual dfa::DFAState* getExistingTargetState(dfa::DFAState *previousD, size_t t) override;
virtual dfa::DFAState* computeTargetState(dfa::DFA &dfa, dfa::DFAState *previousD, size_t t) override;
virtual std::unique_ptr<ATNConfigSet> computeReachSet(ATNConfigSet *closure, size_t t, bool fullCtx) override;
virtual bool evalSemanticContext(Ref<const SemanticContext> const& pred, ParserRuleContext *parserCallStack,
size_t alt, bool fullCtx) override;
virtual void reportAttemptingFullContext(dfa::DFA &dfa, const antlrcpp::BitSet &conflictingAlts, ATNConfigSet *configs,
size_t startIndex, size_t stopIndex) override;
virtual void reportContextSensitivity(dfa::DFA &dfa, size_t prediction, ATNConfigSet *configs,
size_t startIndex, size_t stopIndex) override;
virtual void reportAmbiguity(dfa::DFA &dfa, dfa::DFAState *D, size_t startIndex, size_t stopIndex, bool exact,
const antlrcpp::BitSet &ambigAlts, ATNConfigSet *configs) override;
};
} }