private static Nfa UnitRange(RegexCharacters unitRange, bool negate) { switch (unitRange) { case RegexCharactersUnit unit: return(Character(unit.Character, negate)); case RegexCharactersRange range: return(Range(range, negate)); } throw new InvalidOperationException("Unreachable code detected."); }
private RegexCharacterClass VisitCharacterClassNode(IInternalTreeNode node) { RegexCharacters characterRange = null; RegexCharacterClass characterClass = null; foreach (var internalNode in node.Children.OfType <IInternalTreeNode>()) { if (internalNode.Is(RegexGrammar.CharacterRange)) { characterRange = VisitCharacterRangeNode(internalNode); } else if (internalNode.Is(RegexGrammar.CharacterClass)) { characterClass = VisitCharacterClassNode(internalNode); } } if (characterClass == null) { return(new RegexCharacterClass(characterRange)); } return(new RegexCharacterClassAlteration(characterRange, characterClass)); }
public RegexCharacterClass(RegexCharacters characterRange) { CharacterRange = characterRange; }
public RegexCharacterClassAlteration(RegexCharacters characterRange, RegexCharacterClass characterClass) : base(characterRange) { CharacterClass = characterClass; }