mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 08: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:
parent
f670adb298
commit
addfa1e82e
2 changed files with 12 additions and 13 deletions
|
@ -347,7 +347,7 @@ public:
|
|||
// 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;
|
||||
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
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue