/// <summary> /// Установить входной символ /// </summary> /// <param name="input">входный символ</param> /// <returns></returns> public bool Input(TAlphabetInput input) { _currentIndex++; if (_sequence.Symbols.Length <= _currentIndex) { throw new IndexOutOfRangeException("длина последовательности меньше днлины входной цепочки"); } if (Equals(input, _sequence.Symbols[_currentIndex])) { End = _currentIndex >= _sequence.Symbols.Length - 1; return(true); } return(false); }
public bool Input(TAlphabetInput alphabetInput) { if (_sequences == null) { return(false); } _coincided.Clear(); bool coincidedAny = false; for (int i = _sequences.Count - 1; i >= 0; i--) { var sequence = _sequences[i]; if (sequence == null) { continue; } if (sequence.Input(alphabetInput)) { coincidedAny = true; if (sequence.End) { _coincided.Add(sequence.Sequence); _sequences.RemoveAt(i); } } else { _screenedOut.Add(sequence.Sequence); _sequences.RemoveAt(i); } } return(coincidedAny); }