public void Add(CharRange inputRange, CharFA <TAccept> fa)
 {
     _rangeTransitions.Add(new RangeWithFa(inputRange, fa));
     if (!_charactersByState.TryGetValue(fa, out var chars))
     {
         chars = new CharactersAndRanges(new List <char>(), new List <CharRange>());
         _charactersByState[fa] = chars;
     }
     chars.ranges.Add(inputRange);
 }
 public void Add(char input, CharFA <TAccept> fa)
 {
     _charactersTransitions.Add(input, fa);
     if (!_charactersByState.TryGetValue(fa, out var chars))
     {
         chars = new CharactersAndRanges(new List <char>(), new List <CharRange>());
         _charactersByState[fa] = chars;
     }
     chars.characters.Add(input);
 }
 public void Add(CharFA <TAccept> fa, CharactersAndRanges inputs)
 {
     foreach (var input in inputs.characters)
     {
         Add(input, fa);
     }
     foreach (var inputsRange in inputs.ranges)
     {
         Add(inputsRange, fa);
     }
 }