LibRegex: Add support for regex modifiers

This commit implements the regexp-modifiers proposal. It allows us to
use modification of i,m,s flags within groups using
`(?flags:subpattern)` and `(?flags-flags:subpattern)` syntax.
This commit is contained in:
aplefull
2025-12-04 00:16:16 +01:00
committed by Ali Mohammad Pur
parent 3fb0e69c20
commit e4572aa9d7
Notes: github-actions[bot] 2026-01-16 14:01:26 +00:00
9 changed files with 319 additions and 18 deletions

View File

@@ -34,6 +34,8 @@ enum class Error : u8 {
DuplicateNamedCapture = __Regex_DuplicateNamedCapture, // Name of property is invalid.
InvalidCharacterClassEscape = __Regex_InvalidCharacterClassEscape, // Invalid escaped entity in character class.
NegatedCharacterClassStrings = __Regex_NegatedCharacterClassStrings, // Negated character class may contain strings.
InvalidModifierGroup = __Regex_InvalidModifierGroup, // Invalid modifier group.
RepeatedModifierFlag = __Regex_RepeatedModifierFlag, // Repeated flag in modifier group.
};
inline StringView get_error_string(Error error)
@@ -80,7 +82,11 @@ inline StringView get_error_string(Error error)
case Error::InvalidCharacterClassEscape:
return "Invalid escaped entity in character class."sv;
case Error::NegatedCharacterClassStrings:
return "Negated character class cannot contain strings"sv;
return "Negated character class cannot contain strings."sv;
case Error::InvalidModifierGroup:
return "Invalid modifier group."sv;
case Error::RepeatedModifierFlag:
return "Repeated flag in modifier group."sv;
}
return "Undefined error."sv;
}