#![allow(clippy::print_stdout)] use oxc_allocator::Allocator; use oxc_regular_expression::{LiteralParser, Options}; fn main() { let allocator = Allocator::default(); for (pattern_text, flags_text) in [ (r"ab", ""), (r"abc", "i"), (r"abcd", "igv"), (r"emo👈🏻ji", "u"), (r"ab|c", "i"), (r"a|b+|c", "i"), (r"a{0}|b{1,2}|c{3,}", "i"), (r"(?=a)|(?<=b)|(?!c)|(?x\1c", "u"), (r"(cg)(?cg)(?:g)", ""), (r"{3}", ""), // Error (r"Em🥹j", ""), (r"^(?=ab)\b(?!cd)(?<=ef)\B(?)(?)", ""), // Error (r"(?noname)", "v"), // Error (r"[\bb]", ""), (r"a{2,1}", "v"), // Error ] { let parser = LiteralParser::new( &allocator, pattern_text, Some(flags_text), // +1 for added `/` in error reports Options { pattern_span_offset: 1, ..Options::default() }, ); let ret = parser.parse(); let literal = format!("/{pattern_text}/{flags_text}"); println!("Parse: {literal}"); match ret { Ok(pattern) => { println!("✨ {pattern:#?}"); } Err(error) => { let error = error.with_source_code(literal); println!("💥 {error:?}"); } } println!(); } }