From addfa1e82e9208139377c56fd5f1a7580a90ad4d Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Sat, 10 Jul 2021 14:18:04 +0430 Subject: [PATCH] LibRegex: Make the bytecode transformation functions static They were pretty confusing when compared with other non-transforming functions. --- Userland/Libraries/LibRegex/RegexByteCode.h | 8 ++++---- Userland/Libraries/LibRegex/RegexParser.cpp | 17 ++++++++--------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Userland/Libraries/LibRegex/RegexByteCode.h b/Userland/Libraries/LibRegex/RegexByteCode.h index 4ab85fd967..d53ab64462 100644 --- a/Userland/Libraries/LibRegex/RegexByteCode.h +++ b/Userland/Libraries/LibRegex/RegexByteCode.h @@ -347,7 +347,7 @@ public: // LABEL _END = alterantive_bytecode.size } - void insert_bytecode_repetition_min_max(ByteCode& bytecode_to_repeat, size_t minimum, Optional maximum, bool greedy = true) + static void transform_bytecode_repetition_min_max(ByteCode& bytecode_to_repeat, size_t minimum, Optional maximum, bool greedy = true) { ByteCode new_bytecode; new_bytecode.insert_bytecode_repetition_n(bytecode_to_repeat, minimum); @@ -381,7 +381,7 @@ public: extend(bytecode_to_repeat); } - void insert_bytecode_repetition_min_one(ByteCode& bytecode_to_repeat, bool greedy) + static void transform_bytecode_repetition_min_one(ByteCode& bytecode_to_repeat, bool greedy) { // LABEL _START = -bytecode_to_repeat.size() // REGEXP @@ -395,7 +395,7 @@ public: bytecode_to_repeat.empend(-(bytecode_to_repeat.size() + 1)); // Jump to the _START label } - void insert_bytecode_repetition_any(ByteCode& bytecode_to_repeat, bool greedy) + static void transform_bytecode_repetition_any(ByteCode& bytecode_to_repeat, bool greedy) { // LABEL _START // FORKJUMP _END (FORKSTAY -> Greedy) @@ -423,7 +423,7 @@ public: bytecode_to_repeat = move(bytecode); } - void insert_bytecode_repetition_zero_or_one(ByteCode& bytecode_to_repeat, bool greedy) + static void transform_bytecode_repetition_zero_or_one(ByteCode& bytecode_to_repeat, bool greedy) { // FORKJUMP _END (FORKSTAY -> Greedy) // REGEXP diff --git a/Userland/Libraries/LibRegex/RegexParser.cpp b/Userland/Libraries/LibRegex/RegexParser.cpp index a3a271036f..f40a686508 100644 --- a/Userland/Libraries/LibRegex/RegexParser.cpp +++ b/Userland/Libraries/LibRegex/RegexParser.cpp @@ -232,7 +232,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco maybe_maximum = value.value(); } - bytecode_to_repeat.insert_bytecode_repetition_min_max(bytecode_to_repeat, minimum, maybe_maximum); + ByteCode::transform_bytecode_repetition_min_max(bytecode_to_repeat, minimum, maybe_maximum); consume(TokenType::RightCurly, Error::MismatchingBrace); return !has_error(); @@ -245,7 +245,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco consume(); // Note: don't touch match_length_minimum, it's already correct - bytecode_to_repeat.insert_bytecode_repetition_min_one(bytecode_to_repeat, !nongreedy); + ByteCode::transform_bytecode_repetition_min_one(bytecode_to_repeat, !nongreedy); return !has_error(); } else if (match(TokenType::Asterisk)) { @@ -256,7 +256,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco if (nongreedy) consume(); - bytecode_to_repeat.insert_bytecode_repetition_any(bytecode_to_repeat, !nongreedy); + ByteCode::transform_bytecode_repetition_any(bytecode_to_repeat, !nongreedy); return !has_error(); @@ -268,7 +268,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco if (nongreedy) consume(); - bytecode_to_repeat.insert_bytecode_repetition_zero_or_one(bytecode_to_repeat, !nongreedy); + ByteCode::transform_bytecode_repetition_zero_or_one(bytecode_to_repeat, !nongreedy); return !has_error(); } @@ -956,21 +956,20 @@ bool ECMA262Parser::parse_quantifier(ByteCode& stack, size_t& match_length_minim ungreedy = true; } - ByteCode new_bytecode; switch (repetition_mark) { case Repetition::OneOrMore: - new_bytecode.insert_bytecode_repetition_min_one(stack, !ungreedy); + ByteCode::transform_bytecode_repetition_min_one(stack, !ungreedy); break; case Repetition::ZeroOrMore: - new_bytecode.insert_bytecode_repetition_any(stack, !ungreedy); + ByteCode::transform_bytecode_repetition_any(stack, !ungreedy); match_length_minimum = 0; break; case Repetition::Optional: - new_bytecode.insert_bytecode_repetition_zero_or_one(stack, !ungreedy); + ByteCode::transform_bytecode_repetition_zero_or_one(stack, !ungreedy); match_length_minimum = 0; break; case Repetition::Explicit: - new_bytecode.insert_bytecode_repetition_min_max(stack, repeat_min.value(), repeat_max, !ungreedy); + ByteCode::transform_bytecode_repetition_min_max(stack, repeat_min.value(), repeat_max, !ungreedy); match_length_minimum *= repeat_min.value(); break; case Repetition::None: