Antlr4.Runtime.Atn.ParserATNSimulator.PredicateDFAState C# (CSharp) Метод

PredicateDFAState() защищенный Метод

protected PredicateDFAState ( DFAState dfaState, DecisionState decisionState ) : void
dfaState Antlr4.Runtime.Dfa.DFAState
decisionState DecisionState
Результат void
        protected void PredicateDFAState(DFAState dfaState, DecisionState decisionState)
        {
            // We need to test all predicates, even in DFA states that
            // uniquely predict alternative.
            int nalts = decisionState.NumberOfTransitions;
            // Update DFA so reach becomes accept state with (predicate,alt)
            // pairs if preds found for conflicting alts
            BitSet altsToCollectPredsFrom = GetConflictingAltsOrUniqueAlt(dfaState.configSet);
            SemanticContext[] altToPred = GetPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configSet, nalts);
            if (altToPred != null)
            {
                dfaState.predicates = GetPredicatePredictions(altsToCollectPredsFrom, altToPred);
                dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds
            }
            else {
                // There are preds in configs but they might go away
                // when OR'd together like {p}? || NONE == NONE. If neither
                // alt has preds, resolve to min alt
                dfaState.prediction = altsToCollectPredsFrom.NextSetBit(0);
            }
        }