diff --git a/src/parser/Parser.rl b/src/parser/Parser.rl index 96656875..65cd7c1a 100644 --- a/src/parser/Parser.rl +++ b/src/parser/Parser.rl @@ -893,11 +893,7 @@ unichar readUtf8CodePoint4c(const u8 *ts) { throw LocatedParseError("Invalid POSIX named class"); }; '\\Q' => { - // fcall readQuotedClass; - ostringstream str; - str << "\\Q..\\E sequences in character classes not supported at index " - << ts - ptr << "."; - throw ParseError(str.str()); + fcall readQuotedClass; }; '\\E' => { /*noop*/}; # Backspace (this is only valid for \b in char classes) @@ -1131,10 +1127,7 @@ unichar readUtf8CodePoint4c(const u8 *ts) { inCharClassEarly = false; }; # if we hit a quote before anything "real", handle it - #'\\Q' => { fcall readQuotedClass; }; - '\\Q' => { - throw LocatedParseError("\\Q..\\E sequences in character classes not supported"); - }; + '\\Q' => { fcall readQuotedClass; }; '\\E' => { /*noop*/}; # time for the real work to happen @@ -1170,6 +1163,7 @@ unichar readUtf8CodePoint4c(const u8 *ts) { # Literal character any => { currentCls->add(*ts); + inCharClassEarly = false; }; *|; diff --git a/unit/hyperscan/bad_patterns.txt b/unit/hyperscan/bad_patterns.txt index 3b13e064..fb2a2357 100644 --- a/unit/hyperscan/bad_patterns.txt +++ b/unit/hyperscan/bad_patterns.txt @@ -85,7 +85,6 @@ 84:/[=\]=]/ #Unsupported POSIX collating element at index 0. 85:/A(?!)+Z/ #Invalid repeat at index 5. 86:/\X/ #\X unsupported at index 0. -87:/[a\Qz\E]/ #\Q..\E sequences in character classes not supported at index 2. 88:/[A-\d]/ #Invalid range in character class at index 3. 89:/[A-[:digit:]]/ #Invalid range in character class at index 3. 90:/B[--[:digit:]--]+/ #Invalid range in character class at index 4.