NextSetBit() публичный Метод

public NextSetBit ( int fromIndex ) : int
fromIndex int
Результат int
Пример #1
0
 public BitSet GetAncestors(int rule)
 {
     BitSet ancestors = new BitSet();
     ancestors.Or(parents[rule]);
     while (true)
     {
         int cardinality = ancestors.Cardinality();
         for (int i = ancestors.NextSetBit(0); i >= 0; i = ancestors.NextSetBit(i + 1))
         {
             ancestors.Or(parents[i]);
         }
         if (ancestors.Cardinality() == cardinality)
         {
             // nothing changed
             break;
         }
     }
     return ancestors;
 }
Пример #2
0
 public BitSet GetDescendants(int rule)
 {
     BitSet descendants = new BitSet();
     descendants.Or(children[rule]);
     while (true)
     {
         int cardinality = descendants.Cardinality();
         for (int i = descendants.NextSetBit(0); i >= 0; i = descendants.NextSetBit(i + 1))
         {
             descendants.Or(children[i]);
         }
         if (descendants.Cardinality() == cardinality)
         {
             // nothing changed
             break;
         }
     }
     return descendants;
 }
Пример #3
0
 protected internal override void ReportAttemptingFullContext(DFA dfa, BitSet conflictingAlts, SimulatorState conflictState, int startIndex, int stopIndex)
 {
     if (conflictingAlts != null)
     {
         conflictingAltResolvedBySLL = conflictingAlts.NextSetBit(0);
     }
     else
     {
         conflictingAltResolvedBySLL = conflictState.s0.configs.RepresentedAlternatives.NextSetBit(0);
     }
     decisions[currentDecision].LL_Fallback++;
     base.ReportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex);
 }
Пример #4
0
 protected internal override void ReportAmbiguity(DFA dfa, DFAState D, int startIndex, int stopIndex, bool exact, BitSet ambigAlts, ATNConfigSet configs)
 {
     int prediction;
     if (ambigAlts != null)
     {
         prediction = ambigAlts.NextSetBit(0);
     }
     else
     {
         prediction = configs.RepresentedAlternatives.NextSetBit(0);
     }
     if (conflictingAltResolvedBySLL != ATN.InvalidAltNumber && prediction != conflictingAltResolvedBySLL)
     {
         // Even though this is an ambiguity we are reporting, we can
         // still detect some context sensitivities.  Both SLL and LL
         // are showing a conflict, hence an ambiguity, but if they resolve
         // to different minimum alternatives we have also identified a
         // context sensitivity.
         decisions[currentDecision].contextSensitivities.Add(new ContextSensitivityInfo(currentDecision, currentState, _input, startIndex, stopIndex));
     }
     decisions[currentDecision].ambiguities.Add(new AmbiguityInfo(currentDecision, currentState, ambigAlts, _input, startIndex, stopIndex));
     base.ReportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs);
 }
Пример #5
0
 protected override void ReportAttemptingFullContext(DFA dfa, BitSet conflictingAlts, ATNConfigSet configs, int startIndex, int stopIndex)
 {
     if (conflictingAlts != null)
     {
     conflictingAltResolvedBySLL = conflictingAlts.NextSetBit(0);
     }
     else {
         conflictingAltResolvedBySLL = configs.GetAlts().NextSetBit(0);
     }
     decisions[currentDecision].LL_Fallback++;
     base.ReportAttemptingFullContext(dfa, conflictingAlts, configs, startIndex, stopIndex);
 }