public void WhitespaceTerminalGetIntervalsShouldReturnAllWhitespaceRanges() { var whitespaceTerminal = new WhitespaceTerminal(); var intervals = whitespaceTerminal.GetIntervals(); Assert.AreEqual(9, intervals.Count); }
private static BaseLexerRule CreateWhitespaceLexerRule() { var whitespaceTerminal = new WhitespaceTerminal(); var startState = new DfaState(); var finalState = new DfaState(true); var whitespaceTransition = new DfaTransition(whitespaceTerminal, finalState); startState.AddTransition(whitespaceTransition); finalState.AddTransition(whitespaceTransition); return(new DfaLexerRule(startState, new TokenType("[\\s]+"))); }
private static BaseLexerRule Whitespace() { var whitespaceTerminal = new WhitespaceTerminal(); var startWhitespace = new DfaState(); var finalWhitespace = new DfaState(true); startWhitespace.AddTransition(new DfaTransition(whitespaceTerminal, finalWhitespace)); finalWhitespace.AddTransition(new DfaTransition(whitespaceTerminal, finalWhitespace)); var whitespace = new DfaLexerRule(startWhitespace, TokenTypes.Whitespace); return(whitespace); }
private static ITerminal CreateTerminalForCharacter(char value, bool isEscaped, bool negate) { ITerminal terminal = null; if (!isEscaped) { terminal = new CharacterTerminal(value); } else { switch (value) { case 's': terminal = new WhitespaceTerminal(); break; case 'd': terminal = new DigitTerminal(); break; case 'w': terminal = new WordTerminal(); break; case 'D': terminal = new DigitTerminal(); negate = !negate; break; case 'S': terminal = new WhitespaceTerminal(); negate = !negate; break; case 'W': terminal = new WordTerminal(); negate = !negate; break; default: terminal = new CharacterTerminal(value); break; } } if (negate) { terminal = new NegationTerminal(terminal); } return(terminal); }
public void WhitespaceShouldMatchSpaceCharacter() { var whitespaceTerminal = new WhitespaceTerminal(); Assert.IsTrue(whitespaceTerminal.IsMatch(' ')); }
public void WhitespaceTerminalShouldMatchLineFeed() { var whitespaceTerminal = new WhitespaceTerminal(); Assert.IsTrue(whitespaceTerminal.IsMatch('\n')); }
public void WhitespaceTerminalShouldMatchNewLineCharacter() { var whitespaceTerminal = new WhitespaceTerminal(); Assert.IsTrue(whitespaceTerminal.IsMatch('\r')); }
private static INfa Character(RegexCharacterClassCharacter character, bool negate) { var start = new NfaState(); var end = new NfaState(); ITerminal terminal = null; if (!character.IsEscaped) { terminal = new CharacterTerminal(character.Value); } else { switch (character.Value) { case 's': terminal = new WhitespaceTerminal(); break; case 'd': terminal = new DigitTerminal(); break; case 'w': terminal = new WordTerminal(); break; case 'D': terminal = new DigitTerminal(); negate = !negate; break; case 'S': terminal = new WhitespaceTerminal(); negate = !negate; break; case 'W': terminal = new WordTerminal(); negate = !negate; break; default: terminal = new CharacterTerminal(character.Value); break; } } if (negate) { terminal = new NegationTerminal(terminal); } var transition = new TerminalNfaTransition( terminal: terminal, target: end); start.AddTransistion(transition); return(new Nfa(start, end)); }