From 7c7a10dd58d50bacc712e91e2344c466a22a2d25 Mon Sep 17 00:00:00 2001 From: Jonas Maier Date: Wed, 3 Jun 2026 20:18:14 +0200 Subject: regex: more lenient [bracket] parsing --- src/parse/regex/mod.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/parse/regex') diff --git a/src/parse/regex/mod.rs b/src/parse/regex/mod.rs index d0335f0..63808cd 100644 --- a/src/parse/regex/mod.rs +++ b/src/parse/regex/mod.rs @@ -152,10 +152,6 @@ fn parse_atom(s: &mut super::Cursor<'_>) -> Result { return Ok(Pattern::Alt(ranges)); } - if is_symbol(tok) { - return Err(ParseError::Unknown(tok)); - } - let begin = s.loc(); if s.has() && s.peek() == b'-' { s.adv(); @@ -164,13 +160,17 @@ fn parse_atom(s: &mut super::Cursor<'_>) -> Result { if !s.has() { return Err(ParseError::Eof); } - let tok2 = s.adv(); + let tok2 = s.peek(); - if is_symbol(tok2) { + if tok2 == b']' { + ranges.push(Pattern::Byte(tok)); + ranges.push(Pattern::Byte(b'-')); + } else if is_symbol(tok2) { return Err(ParseError::Unknown(tok2)); + } else { + s.adv(); + ranges.push(Pattern::Range(tok, tok2)); } - - ranges.push(Pattern::Range(tok, tok2)); } else { ranges.push(Pattern::Byte(tok)); } -- cgit v1.2.3