private static BaseLexerRule CreateNotDoubleQuoteLexerRule() { // ([^"]|(\\.))* var start = new DfaState(); var escape = new DfaState(); var final = new DfaState(true); var notDoubleQuoteTerminal = new NegationTerminal( new CharacterTerminal('"')); var escapeTerminal = new CharacterTerminal('\\'); var anyTerminal = new AnyTerminal(); var notDoubleQuoteEdge = new DfaTransition(notDoubleQuoteTerminal, final); start.AddTransition(notDoubleQuoteEdge); final.AddTransition(notDoubleQuoteEdge); var escapeEdge = new DfaTransition(escapeTerminal, escape); start.AddTransition(escapeEdge); final.AddTransition(escapeEdge); var anyEdge = new DfaTransition(anyTerminal, final); escape.AddTransition(anyEdge); return new DfaLexerRule(start, new TokenType(@"([^""]|(\\.))+")); }
public void Test_AnyTerminal_That_IsMatch_Returns_True_When_Any_Character_Specified() { var anyTerminal = new AnyTerminal(); for (char c = char.MinValue; c < char.MaxValue; c++) Assert.IsTrue(anyTerminal.IsMatch(c)); }
private static ILexerRule CreateNotDoubleQuoteLexerRule() { // ( [^"\\] | (\\ .) ) + var start = new DfaState(); var escape = new DfaState(); var final = new DfaState(true); var notQuoteTerminal = new NegationTerminal( new SetTerminal('"', '\\')); var escapeTerminal = new Terminal('\\'); var anyTerminal = new AnyTerminal(); var notQuoteEdge = new DfaEdge(notQuoteTerminal, final); start.AddEdge(notQuoteEdge); final.AddEdge(notQuoteEdge); var escapeEdge = new DfaEdge(escapeTerminal, escape); start.AddEdge(escapeEdge); final.AddEdge(escapeEdge); var anyEdge = new DfaEdge(anyTerminal, final); escape.AddEdge(anyEdge); return new DfaLexerRule(start, new TokenType("not-double-quote")); }
public void AnyTerminalIsMatchShouldReturnTrueWhenAnyCharacterSpecified() { var anyTerminal = new AnyTerminal(); for (char c = char.MinValue; c < char.MaxValue; c++) Assert.IsTrue(anyTerminal.IsMatch(c)); }