소스 검색

LibRegex: Allow syntax characters (except ']') without escapes in classes

e.g. `[:]`
AnotherTest 4 년 전
부모
커밋
158fe9d9ca
1개의 변경된 파일3개의 추가작업 그리고 6개의 파일을 삭제
  1. 3 6
      Libraries/LibRegex/RegexParser.cpp

+ 3 - 6
Libraries/LibRegex/RegexParser.cpp

@@ -297,9 +297,6 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_bracket_expression(ByteCode& stack
                 return set_error(Error::InvalidRange);
             }
 
-        } else if (match(TokenType::Char) || match(TokenType::Period) || match(TokenType::Asterisk) || match(TokenType::EscapeSequence) || match(TokenType::Plus)) {
-            values.append({ CharacterCompareType::Char, (ByteCodeValueType)*consume().value().characters_without_null_termination() });
-
         } else if (match(TokenType::Circumflex)) {
             auto t = consume();
 
@@ -385,9 +382,9 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_bracket_expression(ByteCode& stack
                 // closing bracket expression
                 break;
             }
-        } else
-            // nothing matched, this is a failure, as at least the closing bracket must match...
-            return set_error(Error::MismatchingBracket);
+        } else {
+            values.append({ CharacterCompareType::Char, (ByteCodeValueType)skip() });
+        }
 
         // check if range expression has to be completed...
         if (values.size() >= 3 && values.at(values.size() - 2).type == CharacterCompareType::RangeExpressionDummy) {