1 instantiation of MatchingState
System.Text.RegularExpressions (1)
System\Text\RegularExpressions\Symbolic\SymbolicRegexMatcher.Automata.cs (1)
168state = new MatchingState<TSet>(key.Node, key.PrevCharKind);
58 references to MatchingState
System.Text.RegularExpressions (58)
System\Text\RegularExpressions\Symbolic\MatchingState.cs (1)
144obj is MatchingState<TSet> s && PrevCharKind == s.PrevCharKind && Node.Equals(s.Node);
System\Text\RegularExpressions\Symbolic\StateFlags.cs (1)
9/// for every state, for which they are created by <see cref="MatchingState{TSet}.BuildStateFlags(ISolver{TSet}, bool)"/>.
System\Text\RegularExpressions\Symbolic\SymbolicRegexMatcher.Automata.cs (17)
28private readonly Dictionary<(SymbolicRegexNode<TSet> Node, uint PrevCharKind), MatchingState<TSet>> _stateCache = new(); 35private MatchingState<TSet>?[] _stateArray; 111private Span<int> GetDeltasFor(MatchingState<TSet> state) 125private Span<int[]?> GetNfaDeltasFor(MatchingState<TSet> state) 149private MatchingState<TSet> GetOrCreateState(SymbolicRegexNode<TSet> node, uint prevCharKind) 162private MatchingState<TSet> GetOrCreateState_NoLock(SymbolicRegexNode<TSet> node, uint prevCharKind, bool isInitialState = false) 166if (!_stateCache.TryGetValue(key, out MatchingState<TSet>? state)) 191/// <see cref="MatchingState{TSet}"/> allocated with <see cref="GetOrCreateState(SymbolicRegexNode{TSet}, uint)"/>, 209MatchingState<TSet> coreState = GetOrCreateState(node, prevCharKind); 249/// <summary>Gets the <see cref="MatchingState{TSet}"/> corresponding to the given state ID.</summary> 250private MatchingState<TSet> GetState(int stateId) 253MatchingState<TSet>? state = _stateArray[stateId]; 269MatchingState<TSet> sourceState, int mintermId, int offset, bool checkThreshold, [NotNullWhen(true)] out MatchingState<TSet>? nextState) 276MatchingState<TSet>? targetState = _stateArray[_dfaDelta[offset]]; 312MatchingState<TSet> coreState = GetState(coreId); 341MatchingState<TSet> coreState = GetState(GetCoreStateId(nfaStateId));
System\Text\RegularExpressions\Symbolic\SymbolicRegexMatcher.cs (14)
86private readonly MatchingState<TSet>[] _initialStates; 90private readonly MatchingState<TSet>[] _dotstarredInitialStates; 94private readonly MatchingState<TSet>[] _reverseInitialStates; 173_stateArray = new MatchingState<TSet>[InitialDfaStateCapacity]; 203var initialStates = new MatchingState<TSet>[statesCount]; 213var dotstarredInitialStates = new MatchingState<TSet>[statesCount]; 229var reverseInitialStates = new MatchingState<TSet>[statesCount]; 698MatchingState<TSet> initialState = _initialStates[GetCharKind<TInputReader>(input, i - 1)]; 773MatchingState<TSet> endState = GetState(GetCoreStateId(endStateId)); 899public void InitializeFrom(SymbolicRegexMatcher<TSet> matcher, MatchingState<TSet> dfaMatchingState) 915public CurrentState(MatchingState<TSet> dfaState) 982if (matcher.TryCreateNewTransition(matcher.GetState(state.DfaStateId), mintermId, dfaOffset, checkThreshold: true, out MatchingState<TSet>? nextState)) 1042MatchingState<TSet> coreState = matcher.GetState(matcher.GetCoreStateId(nfaState.Key)); 1058MatchingState<TSet> coreState = matcher.GetState(matcher.GetCoreStateId(nfaState.Key));
System\Text\RegularExpressions\Symbolic\SymbolicRegexMatcher.Dgml.cs (8)
31foreach (MatchingState<TSet> state in _stateCache.Values) 51foreach (MatchingState<TSet> initialState in GetInitialStates(this)) 76foreach (MatchingState<TSet> state in _stateCache.Values) 147foreach (MatchingState<TSet> source in matcher._stateCache.Values) 203static IEnumerable<MatchingState<TSet>> GetInitialStates(SymbolicRegexMatcher<TSet> matcher) 205foreach (MatchingState<TSet> state in matcher._dotstarredInitialStates) 207foreach (MatchingState<TSet> state in matcher._initialStates) 209foreach (MatchingState<TSet> state in matcher._reverseInitialStates)
System\Text\RegularExpressions\Symbolic\SymbolicRegexMatcher.Explore.cs (17)
19HashSet<MatchingState<TSet>> seen = new(); 22Queue<MatchingState<TSet>> toExplore = new(); 37MatchingState<TSet> state = toExplore.Peek(); 44if (!TryCreateNewTransition(state, mintermId, offset, true, out MatchingState<TSet>? nextState)) 57MatchingState<TSet>[] toBreakUp = toExplore.ToArray(); 59foreach (MatchingState<TSet> dfaState in toBreakUp) 65static (int nfaId, (SymbolicRegexMatcher<TSet> Matcher, HashSet<MatchingState<TSet>> Seen, Queue<MatchingState<TSet>> ToExplore) args) => 67MatchingState<TSet>? coreState = args.Matcher.GetState(args.Matcher.GetCoreStateId(nfaId)); 75MatchingState<TSet> state = toExplore.Dequeue(); 92static void EnqueueAll(MatchingState<TSet>[] states, HashSet<MatchingState<TSet>> seen, Queue<MatchingState<TSet>> toExplore) 94foreach (MatchingState<TSet> state in states) 100static void EnqueueIfUnseen(MatchingState<TSet> state, HashSet<MatchingState<TSet>> seen, Queue<MatchingState<TSet>> queue)