1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 06:47:35 +00:00

LibRegex: Make the bytecode transformation functions static

They were pretty confusing when compared with other non-transforming
functions.
This commit is contained in:
Ali Mohammad Pur 2021-07-10 14:18:04 +04:30 committed by Andreas Kling
parent f670adb298
commit addfa1e82e
2 changed files with 12 additions and 13 deletions

View file

@ -347,7 +347,7 @@ public:
// LABEL _END = alterantive_bytecode.size // LABEL _END = alterantive_bytecode.size
} }
void insert_bytecode_repetition_min_max(ByteCode& bytecode_to_repeat, size_t minimum, Optional<size_t> maximum, bool greedy = true) static void transform_bytecode_repetition_min_max(ByteCode& bytecode_to_repeat, size_t minimum, Optional<size_t> maximum, bool greedy = true)
{ {
ByteCode new_bytecode; ByteCode new_bytecode;
new_bytecode.insert_bytecode_repetition_n(bytecode_to_repeat, minimum); new_bytecode.insert_bytecode_repetition_n(bytecode_to_repeat, minimum);
@ -381,7 +381,7 @@ public:
extend(bytecode_to_repeat); 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() // LABEL _START = -bytecode_to_repeat.size()
// REGEXP // REGEXP
@ -395,7 +395,7 @@ public:
bytecode_to_repeat.empend(-(bytecode_to_repeat.size() + 1)); // Jump to the _START label 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 // LABEL _START
// FORKJUMP _END (FORKSTAY -> Greedy) // FORKJUMP _END (FORKSTAY -> Greedy)
@ -423,7 +423,7 @@ public:
bytecode_to_repeat = move(bytecode); 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) // FORKJUMP _END (FORKSTAY -> Greedy)
// REGEXP // REGEXP

View file

@ -232,7 +232,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco
maybe_maximum = value.value(); 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); consume(TokenType::RightCurly, Error::MismatchingBrace);
return !has_error(); return !has_error();
@ -245,7 +245,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco
consume(); consume();
// Note: don't touch match_length_minimum, it's already correct // 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(); return !has_error();
} else if (match(TokenType::Asterisk)) { } else if (match(TokenType::Asterisk)) {
@ -256,7 +256,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco
if (nongreedy) if (nongreedy)
consume(); consume();
bytecode_to_repeat.insert_bytecode_repetition_any(bytecode_to_repeat, !nongreedy); ByteCode::transform_bytecode_repetition_any(bytecode_to_repeat, !nongreedy);
return !has_error(); return !has_error();
@ -268,7 +268,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco
if (nongreedy) if (nongreedy)
consume(); 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(); return !has_error();
} }
@ -956,21 +956,20 @@ bool ECMA262Parser::parse_quantifier(ByteCode& stack, size_t& match_length_minim
ungreedy = true; ungreedy = true;
} }
ByteCode new_bytecode;
switch (repetition_mark) { switch (repetition_mark) {
case Repetition::OneOrMore: case Repetition::OneOrMore:
new_bytecode.insert_bytecode_repetition_min_one(stack, !ungreedy); ByteCode::transform_bytecode_repetition_min_one(stack, !ungreedy);
break; break;
case Repetition::ZeroOrMore: case Repetition::ZeroOrMore:
new_bytecode.insert_bytecode_repetition_any(stack, !ungreedy); ByteCode::transform_bytecode_repetition_any(stack, !ungreedy);
match_length_minimum = 0; match_length_minimum = 0;
break; break;
case Repetition::Optional: 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; match_length_minimum = 0;
break; break;
case Repetition::Explicit: 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(); match_length_minimum *= repeat_min.value();
break; break;
case Repetition::None: case Repetition::None: