public static Regex FromPatternString(string pattern) { if (RegexCache.ContainsKey(pattern)) { return RegexCache[pattern]; } var lexer = new RegexLexer( new Cache<TextReader, char>(new CharCacheSource(new StringReader(pattern))) ); var parser = new RegexParser(lexer); var regex = parser.Parse(); RegexCache.Add(pattern, regex); return regex; }
public RegexParser(RegexLexer lexer) { _lexer = lexer; _lookaheadToken = _lexer.GetNextToken(); _regexStack.Clear(); }