Browse Source

LibRegex: Make the bytecode transformation functions static

They were pretty confusing when compared with other non-transforming
functions.
Ali Mohammad Pur 4 years ago
parent
commit
addfa1e82e

+ 4 - 4
Userland/Libraries/LibRegex/RegexByteCode.h

@@ -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

+ 8 - 9
Userland/Libraries/LibRegex/RegexParser.cpp

@@ -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: