private static void TestRange(RegexContext context, SequenceBuffer <char> buffer) { var backtrackState = new BacktrackState(true, context.CurrentState); int j = 0; while (true) { if (buffer.IsPastEnd(context.Index)) { backtrackState.AddZeroConsumed(); context.Push(backtrackState); context.MoveToNextState(); break; } var(matches, consumed) = MatchStateHere(context.CurrentState, buffer, context.Index); if (!matches || consumed == 0) { backtrackState.AddZeroConsumed(); context.Push(backtrackState); context.MoveToNextState(); break; } backtrackState.AddConsumption(consumed); context.AdvanceIndex(consumed); j++; if (j >= context.CurrentState.Maximum) { context.MoveToNextState(); break; } } }
public void Push(BacktrackState backtrackState) { _backtrackStack.Push(backtrackState); }