diff --git a/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp b/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp index c68b1d8f2..0ce4a5a64 100755 --- a/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +++ b/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp @@ -352,12 +352,12 @@ std::unordered_map TokenStreamRe if (iop->index == rop->index) { // E.g., insert before 2, delete 2..2; update replace // text to include insert before, kill insert - rewrites[(size_t)iop->instructionIndex] = nullptr; + rewrites[iop->instructionIndex] = nullptr; rop->text = iop->text + (!rop->text.empty() ? rop->text : ""); } else if (iop->index > rop->index && iop->index <= rop->lastIndex) { // delete insert as it's a no-op. - rewrites[(size_t)iop->instructionIndex] = nullptr; + rewrites[iop->instructionIndex] = nullptr; } } // Drop any prior replaces contained within @@ -366,7 +366,7 @@ std::unordered_map TokenStreamRe for (auto prevRop : prevReplaces) { if (prevRop->index >= rop->index && prevRop->lastIndex <= rop->lastIndex) { // delete replace as it's a no-op. - rewrites[(size_t)prevRop->instructionIndex] = nullptr; + rewrites[prevRop->instructionIndex] = nullptr; continue; } // throw exception unless disjoint or identical @@ -376,7 +376,7 @@ std::unordered_map TokenStreamRe // D.i-j.u D.x-y.v | boundaries overlap combine to max(min)..max(right) if (prevRop->text.empty() && rop->text.empty() && !disjoint) { //System.out.println("overlapping deletes: "+prevRop+", "+rop); - rewrites[(size_t)prevRop->instructionIndex] = nullptr; // kill first delete + rewrites[prevRop->instructionIndex] = nullptr; // kill first delete rop->index = std::min(prevRop->index, rop->index); rop->lastIndex = std::max(prevRop->lastIndex, rop->lastIndex); std::cout << "new rop " << rop << std::endl; diff --git a/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp b/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp index 923dc0de2..5d9ba46e5 100755 --- a/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +++ b/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp @@ -78,7 +78,7 @@ void UnbufferedCharStream::sync(size_t want) { size_t UnbufferedCharStream::fill(size_t n) { for (size_t i = 0; i < n; i++) { - if (_data.size() > 0 && _data.back() == EOF) { + if (_data.size() > 0 && (size_t)_data.back() == EOF) { return i; } diff --git a/runtime/Cpp/runtime/src/atn/ATNConfig.cpp b/runtime/Cpp/runtime/src/atn/ATNConfig.cpp index 80aa1a773..87be0deab 100755 --- a/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +++ b/runtime/Cpp/runtime/src/atn/ATNConfig.cpp @@ -39,11 +39,11 @@ using namespace antlr4::atn; const size_t ATNConfig::SUPPRESS_PRECEDENCE_FILTER = 0x40000000; -ATNConfig::ATNConfig(ATNState *state, int alt, Ref const& context) +ATNConfig::ATNConfig(ATNState *state, size_t alt, Ref const& context) : ATNConfig(state, alt, context, SemanticContext::NONE) { } -ATNConfig::ATNConfig(ATNState *state, int alt, Ref const& context, Ref const& semanticContext) +ATNConfig::ATNConfig(ATNState *state, size_t alt, Ref const& context, Ref const& semanticContext) : state(state), alt(alt), context(context), semanticContext(semanticContext) { reachesIntoOuterContext = 0; } @@ -78,14 +78,14 @@ ATNConfig::~ATNConfig() { size_t ATNConfig::hashCode() const { size_t hashCode = misc::MurmurHash::initialize(7); hashCode = misc::MurmurHash::update(hashCode, state->stateNumber); - hashCode = misc::MurmurHash::update(hashCode, (size_t)alt); + hashCode = misc::MurmurHash::update(hashCode, alt); hashCode = misc::MurmurHash::update(hashCode, context); hashCode = misc::MurmurHash::update(hashCode, semanticContext); hashCode = misc::MurmurHash::finish(hashCode, 4); return hashCode; } -int ATNConfig::getOuterContextDepth() const { +size_t ATNConfig::getOuterContextDepth() const { return reachesIntoOuterContext & ~SUPPRESS_PRECEDENCE_FILTER; } diff --git a/runtime/Cpp/runtime/src/atn/ATNConfig.h b/runtime/Cpp/runtime/src/atn/ATNConfig.h index c6e20fff6..97a0f8d2a 100755 --- a/runtime/Cpp/runtime/src/atn/ATNConfig.h +++ b/runtime/Cpp/runtime/src/atn/ATNConfig.h @@ -63,9 +63,8 @@ namespace atn { /// The ATN state associated with this configuration. ATNState * state; - /// - /// What alt (or lexer rule) is predicted by this configuration - const int alt; + /// What alt (or lexer rule) is predicted by this configuration. + const size_t alt; /// The stack of invoking states leading to the rule/states associated /// with this config. We track only those contexts pushed during @@ -97,13 +96,13 @@ namespace atn { * {@link ATNConfigSet#add(ATNConfig, DoubleKeyMap)} method are * completely unaffected by the change.

*/ - int reachesIntoOuterContext; + size_t reachesIntoOuterContext; /// Can be shared between multiple ATNConfig instances. Ref semanticContext; - ATNConfig(ATNState *state, int alt, Ref const& context); - ATNConfig(ATNState *state, int alt, Ref const& context, Ref const& semanticContext); + ATNConfig(ATNState *state, size_t alt, Ref const& context); + ATNConfig(ATNState *state, size_t alt, Ref const& context, Ref const& semanticContext); ATNConfig(Ref const& c); // dup ATNConfig(Ref const& c, ATNState *state); @@ -121,7 +120,7 @@ namespace atn { * as it existed prior to the introduction of the * {@link #isPrecedenceFilterSuppressed} method. */ - int getOuterContextDepth() const ; + size_t getOuterContextDepth() const ; bool isPrecedenceFilterSuppressed() const; void setPrecedenceFilterSuppressed(bool value); diff --git a/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp b/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp index 0fea3628e..8583aeef5 100755 --- a/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +++ b/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp @@ -239,7 +239,7 @@ std::string ATNConfigSet::toString() { size_t ATNConfigSet::getHash(ATNConfig *c) { size_t hashCode = 7; hashCode = 31 * hashCode + c->state->stateNumber; - hashCode = 31 * hashCode + (size_t)c->alt; + hashCode = 31 * hashCode + c->alt; hashCode = 31 * hashCode + c->semanticContext->hashCode(); return hashCode; } diff --git a/runtime/Cpp/runtime/src/atn/ATNConfigSet.h b/runtime/Cpp/runtime/src/atn/ATNConfigSet.h index dcda6db9d..126ad0c9e 100755 --- a/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +++ b/runtime/Cpp/runtime/src/atn/ATNConfigSet.h @@ -46,7 +46,7 @@ namespace atn { // TO_DO: these fields make me pretty uncomfortable but nice to pack up info together, saves recomputation // TO_DO: can we track conflicts as they are added to save scanning configs later? - int uniqueAlt; + size_t uniqueAlt; /** Currently this is only used when we detect SLL conflict; this does * not necessarily represent the ambiguous alternatives. In fact, diff --git a/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp b/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp index 0fba6f686..033d997cb 100755 --- a/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +++ b/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp @@ -192,7 +192,7 @@ ATN ATNDeserializer::deserialize(const std::vector& input) { // delay the assignment of loop back and end states until we know all the state instances have been initialized for (auto &pair : loopBackStateNumbers) { - pair.first->loopBackState = atn.states[(size_t)pair.second]; + pair.first->loopBackState = atn.states[pair.second]; } for (auto &pair : endStateNumbers) { @@ -224,7 +224,7 @@ ATN ATNDeserializer::deserialize(const std::vector& input) { } for (size_t i = 0; i < nrules; i++) { - size_t s = (size_t)data[p++]; + size_t s = data[p++]; // Also here, the serialized atn must ensure to point to the correct class type. RuleStartState *startState = (RuleStartState*)atn.states[s]; atn.ruleToStartState.push_back(startState); @@ -298,7 +298,7 @@ ATN ATNDeserializer::deserialize(const std::vector& input) { size_t arg2 = data[p + 4]; size_t arg3 = data[p + 5]; Transition *trans = edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets); - ATNState *srcState = atn.states[(size_t)src]; + ATNState *srcState = atn.states[src]; srcState->addTransition(trans); p += 6; } @@ -363,7 +363,7 @@ ATN ATNDeserializer::deserialize(const std::vector& input) { // // DECISIONS // - size_t ndecisions = (size_t)data[p++]; + size_t ndecisions = data[p++]; for (size_t i = 1; i <= ndecisions; i++) { size_t s = data[p++]; DecisionState *decState = dynamic_cast(atn.states[s]); diff --git a/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp b/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp index f67a8d55e..fdcb7d284 100755 --- a/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +++ b/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp @@ -78,7 +78,7 @@ bool LexerATNConfig::hasPassedThroughNonGreedyDecision() { size_t LexerATNConfig::hashCode() const { size_t hashCode = misc::MurmurHash::initialize(7); hashCode = misc::MurmurHash::update(hashCode, state->stateNumber); - hashCode = misc::MurmurHash::update(hashCode, (size_t)alt); + hashCode = misc::MurmurHash::update(hashCode, alt); hashCode = misc::MurmurHash::update(hashCode, context); hashCode = misc::MurmurHash::update(hashCode, semanticContext); hashCode = misc::MurmurHash::update(hashCode, _passedThroughNonGreedyDecision ? 1 : 0); diff --git a/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp b/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp index 141733df6..f32f2e2a1 100755 --- a/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +++ b/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp @@ -260,7 +260,7 @@ size_t LexerATNSimulator::failOrAccept(CharStream *input, ATNConfigSet *reach, s void LexerATNSimulator::getReachableConfigSet(CharStream *input, ATNConfigSet *closure_, ATNConfigSet *reach, size_t t) { // this is used to skip processing for configs which have a lower priority // than a config that already reached an accept state for the same rule - int skipAlt = ATN::INVALID_ALT_NUMBER; + size_t skipAlt = ATN::INVALID_ALT_NUMBER; for (auto c : closure_->configs) { bool currentAltReachedAcceptState = c->alt == skipAlt; diff --git a/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp b/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp index 6ee16cbec..846cbe747 100755 --- a/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +++ b/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp @@ -289,7 +289,7 @@ dfa::DFAState *ParserATNSimulator::computeTargetState(dfa::DFA &dfa, dfa::DFASta // create new target state; we'll add to DFA after it's complete dfa::DFAState *D = new dfa::DFAState(std::move(reach)); /* mem-check: managed by the DFA or deleted below, "reach" is no longer valid now. */ - int predictedAlt = getUniqueAlt(D->configs.get()); + size_t predictedAlt = getUniqueAlt(D->configs.get()); if (predictedAlt != ATN::INVALID_ALT_NUMBER) { // NO CONFLICT, UNIQUELY PREDICTED ALT @@ -685,8 +685,8 @@ std::vector> ParserATNSimulator::getPredsForAmbigAlts(const std::vector> altToPred(nalts + 1); for (auto &c : configs->configs) { - if (ambigAlts.test((size_t)c->alt)) { - altToPred[(size_t)c->alt] = SemanticContext::Or(altToPred[(size_t)c->alt], c->semanticContext); + if (ambigAlts.test(c->alt)) { + altToPred[c->alt] = SemanticContext::Or(altToPred[c->alt], c->semanticContext); } } @@ -794,7 +794,7 @@ BitSet ParserATNSimulator::evalSemanticContext(std::vectorpred == SemanticContext::NONE) { - predictions.set((size_t)prediction->alt); + predictions.set(prediction->alt); if (!complete) { break; } @@ -812,7 +812,7 @@ BitSet ParserATNSimulator::evalSemanticContext(std::vectoralt << std::endl; #endif - predictions.set((size_t)prediction->alt); + predictions.set(prediction->alt); if (!complete) { break; } @@ -823,7 +823,7 @@ BitSet ParserATNSimulator::evalSemanticContext(std::vector const& pred, Ref const& parserCallStack, - int /*alt*/, bool /*fullCtx*/) { + size_t /*alt*/, bool /*fullCtx*/) { return pred->eval(parser, parserCallStack); } @@ -1104,7 +1104,7 @@ BitSet ParserATNSimulator::getConflictingAlts(ATNConfigSet *configs) { BitSet ParserATNSimulator::getConflictingAltsOrUniqueAlt(ATNConfigSet *configs) { BitSet conflictingAlts; if (configs->uniqueAlt != ATN::INVALID_ALT_NUMBER) { - conflictingAlts.set((size_t)configs->uniqueAlt); + conflictingAlts.set(configs->uniqueAlt); } else { conflictingAlts = configs->conflictingAlts; } @@ -1155,8 +1155,8 @@ NoViableAltException ParserATNSimulator::noViableAlt(TokenStream *input, Refget(startIndex), input->LT(1), configs, outerContext); } -int ParserATNSimulator::getUniqueAlt(ATNConfigSet *configs) { - int alt = ATN::INVALID_ALT_NUMBER; +size_t ParserATNSimulator::getUniqueAlt(ATNConfigSet *configs) { + size_t alt = ATN::INVALID_ALT_NUMBER; for (auto &c : configs->configs) { if (alt == ATN::INVALID_ALT_NUMBER) { alt = c->alt; // found first alt diff --git a/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h b/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h index d36373cb4..edc8f920f 100755 --- a/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +++ b/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h @@ -686,7 +686,7 @@ namespace atn { * @since 4.3 */ virtual bool evalSemanticContext(Ref const& pred, Ref const& parserCallStack, - int alt, bool fullCtx); + size_t alt, bool fullCtx); /* TO_DO: If we are doing predicates, there is no point in pursuing closure operations if we reach a DFA state that uniquely predicts @@ -788,7 +788,7 @@ namespace atn { virtual NoViableAltException noViableAlt(TokenStream *input, Ref const& outerContext, ATNConfigSet *configs, size_t startIndex); - static int getUniqueAlt(ATNConfigSet *configs); + static size_t getUniqueAlt(ATNConfigSet *configs); /// /// Add an edge to the DFA, if possible. This method calls diff --git a/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp b/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp index 36cbcfb08..2b186a34d 100755 --- a/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +++ b/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp @@ -37,7 +37,7 @@ using namespace antlr4; using namespace antlr4::atn; PredicateEvalInfo::PredicateEvalInfo(size_t decision, TokenStream *input, size_t startIndex, size_t stopIndex, - Ref const& semctx, bool evalResult, int predictedAlt, bool fullCtx) + Ref const& semctx, bool evalResult, size_t predictedAlt, bool fullCtx) : DecisionEventInfo(decision, nullptr, input, startIndex, stopIndex, fullCtx), semctx(semctx), predictedAlt(predictedAlt), evalResult(evalResult) { } diff --git a/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h b/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h index 4efa0b268..7d890b6f7 100755 --- a/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +++ b/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h @@ -54,7 +54,7 @@ namespace atn { /// configurations may predict the same alternative which are guarded by /// other semantic contexts and/or . /// - const int predictedAlt; + const size_t predictedAlt; /// The result of evaluating the semantic context . const bool evalResult; @@ -81,7 +81,7 @@ namespace atn { /// /// PredicateEvalInfo(size_t decision, TokenStream *input, size_t startIndex, size_t stopIndex, - Ref const& semctx, bool evalResult, int predictedAlt, bool fullCtx); + Ref const& semctx, bool evalResult, size_t predictedAlt, bool fullCtx); }; } // namespace atn diff --git a/runtime/Cpp/runtime/src/atn/PredictionMode.cpp b/runtime/Cpp/runtime/src/atn/PredictionMode.cpp index e95fceeb9..3736afc33 100755 --- a/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +++ b/runtime/Cpp/runtime/src/atn/PredictionMode.cpp @@ -198,7 +198,7 @@ std::vector PredictionModeClass::getConflictingAltSubsets(ATNC std::map PredictionModeClass::getStateToAltMap(ATNConfigSet *configs) { std::map m; for (auto &c : configs->configs) { - m[c->state].set((size_t)c->alt); + m[c->state].set(c->alt); } return m; } diff --git a/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp b/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp index 27c04c042..00ffe7c81 100755 --- a/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +++ b/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp @@ -139,7 +139,7 @@ std::unique_ptr ProfilingATNSimulator::computeReachSet(ATNConfigSe } bool ProfilingATNSimulator::evalSemanticContext(Ref const& pred, Ref const& parserCallStack, - int alt, bool fullCtx) { + size_t alt, bool fullCtx) { bool result = ParserATNSimulator::evalSemanticContext(pred, parserCallStack, alt, fullCtx); if (!(std::dynamic_pointer_cast(pred) != nullptr)) { bool fullContext = _llStopIndex >= 0; diff --git a/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h b/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h index fa0008162..a2d98922f 100755 --- a/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +++ b/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h @@ -73,7 +73,7 @@ namespace atn { virtual dfa::DFAState* computeTargetState(dfa::DFA &dfa, dfa::DFAState *previousD, size_t t) override; virtual std::unique_ptr computeReachSet(ATNConfigSet *closure, size_t t, bool fullCtx) override; virtual bool evalSemanticContext(Ref const& pred, Ref const& parserCallStack, - int alt, bool fullCtx) override; + 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, diff --git a/runtime/Cpp/runtime/src/dfa/DFAState.cpp b/runtime/Cpp/runtime/src/dfa/DFAState.cpp index 5184915ca..b4c159cb4 100755 --- a/runtime/Cpp/runtime/src/dfa/DFAState.cpp +++ b/runtime/Cpp/runtime/src/dfa/DFAState.cpp @@ -70,8 +70,8 @@ DFAState::~DFAState() { } } -std::set DFAState::getAltSet() { - std::set alts; +std::set DFAState::getAltSet() { + std::set alts; if (configs != nullptr) { for (size_t i = 0; i < configs->size(); i++) { alts.insert(configs->get(i)->alt); diff --git a/runtime/Cpp/runtime/src/dfa/DFAState.h b/runtime/Cpp/runtime/src/dfa/DFAState.h index c0a62ae6c..ef1679634 100755 --- a/runtime/Cpp/runtime/src/dfa/DFAState.h +++ b/runtime/Cpp/runtime/src/dfa/DFAState.h @@ -129,7 +129,7 @@ namespace dfa { /// Get the set of all alts mentioned by all ATN configurations in this /// DFA state. /// - virtual std::set getAltSet(); + virtual std::set getAltSet(); virtual size_t hashCode() const; diff --git a/runtime/Cpp/runtime/src/misc/IntervalSet.cpp b/runtime/Cpp/runtime/src/misc/IntervalSet.cpp index 09b4721e3..62727c0f6 100755 --- a/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +++ b/runtime/Cpp/runtime/src/misc/IntervalSet.cpp @@ -478,7 +478,7 @@ std::string IntervalSet::elementName(const dfa::Vocabulary &vocabulary, ssize_t size_t IntervalSet::size() const { size_t result = 0; for (auto &interval : _intervals) { - result += (size_t)(interval.b - interval.a + 1); + result += size_t(interval.b - interval.a + 1); } return result; } @@ -556,9 +556,9 @@ void IntervalSet::remove(ssize_t el) { } // if in middle a..x..b, split interval if (el > a && el < b) { // found in this interval - size_t oldb = (size_t)interval.b; + ssize_t oldb = interval.b; interval.b = el - 1; // [a..x-1] - add(el + 1, (int)oldb); // add [x+1..b] + add(el + 1, oldb); // add [x+1..b] break; // ml: not in the Java code but I believe we also should stop searching here, as we found x. }