private static void Map(char c, ref RegExNfaEvaluationNode current, ref RegExNfaEvaluationNode spare) { current.MapTo(c, spare); var tmp = current; current = spare; spare = tmp; spare.Reset(); }
public void MapTo(char c, RegExNfaEvaluationNode target) { for (var i = 0; i < _numMembers; i++) { var nfa = _states[_members[i]]; var nfaMap = nfa.Map; var cnt = nfaMap.Count; for (var j = 0; j < cnt; j++) { var range = nfaMap[j]; if (range.Key.Min <= c && c <= range.Key.Max) { target.Apply(range.Value); // c is contained in [Key.Min;Key.Max] } } } }