public void RegexTokenize(string value) { var rx = RegexLexer.Create((symbol, capture) => this.output.WriteLine("{0}({1}): {2}", symbol.ToString(RegexLexer.SymbolNameResolver), capture.Index, capture.AsString())); rx.Push(value); rx.Push(Utf16Chars.EOF); }
public static RegexExpression Parse(string regex, SymbolId?acceptSymbol, bool ignorePatternWhitespace = true, bool breakOnSlash = false) { var state = new RegexParser(null, ignorePatternWhitespace, breakOnSlash); RegexLexer.Create(state.ProcessTerminal).Push(regex.Append(Utf16Chars.EOF)); var result = state.Flush(); return(acceptSymbol.HasValue ? RegexAccept.Create(result, acceptSymbol.Value) : result); }