RegExp refactoring and improvements

Move RegExp bytecode functions to a separate file.
Optimize bytecode lenght on character matching.
Implement a basic RegExp cache to optimize memory
usage on duplicated RegExp in JS files. Also fix
minor style issues and add missing comments. Improve
existing comments.

JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com
This commit is contained in:
László Langó
2016-02-18 10:23:45 +00:00
parent 3f377692d9
commit 2c72bb1139
16 changed files with 844 additions and 601 deletions
+23 -23
View File
@@ -34,28 +34,28 @@
*/
typedef enum
{
RE_TOK_EOF, /* EOF */
RE_TOK_BACKREFERENCE, /* \[0..9] */
RE_TOK_CHAR, /* any character */
RE_TOK_ALTERNATIVE, /* | */
RE_TOK_ASSERT_START, /* ^ */
RE_TOK_ASSERT_END, /* $ */
RE_TOK_PERIOD, /* . */
RE_TOK_START_CAPTURE_GROUP, /* ( */
RE_TOK_START_NON_CAPTURE_GROUP, /* (?: */
RE_TOK_END_GROUP, /* ')' */
RE_TOK_ASSERT_START_POS_LOOKAHEAD, /* (?= */
RE_TOK_ASSERT_START_NEG_LOOKAHEAD, /* (?! */
RE_TOK_ASSERT_WORD_BOUNDARY, /* \b */
RE_TOK_ASSERT_NOT_WORD_BOUNDARY, /* \B */
RE_TOK_DIGIT, /* \d */
RE_TOK_NOT_DIGIT, /* \D */
RE_TOK_WHITE, /* \s */
RE_TOK_NOT_WHITE, /* \S */
RE_TOK_WORD_CHAR, /* \w */
RE_TOK_NOT_WORD_CHAR, /* \W */
RE_TOK_START_CHAR_CLASS, /* [ ] */
RE_TOK_START_INV_CHAR_CLASS, /* [^ ] */
RE_TOK_EOF, /**< EOF */
RE_TOK_BACKREFERENCE, /**< \[0..9] */
RE_TOK_CHAR, /**< any character */
RE_TOK_ALTERNATIVE, /**< | */
RE_TOK_ASSERT_START, /**< ^ */
RE_TOK_ASSERT_END, /**< $ */
RE_TOK_PERIOD, /**< . */
RE_TOK_START_CAPTURE_GROUP, /**< ( */
RE_TOK_START_NON_CAPTURE_GROUP, /**< (?: */
RE_TOK_END_GROUP, /**< ')' */
RE_TOK_ASSERT_START_POS_LOOKAHEAD, /**< (?= */
RE_TOK_ASSERT_START_NEG_LOOKAHEAD, /**< (?! */
RE_TOK_ASSERT_WORD_BOUNDARY, /**< \b */
RE_TOK_ASSERT_NOT_WORD_BOUNDARY, /**< \B */
RE_TOK_DIGIT, /**< \d */
RE_TOK_NOT_DIGIT, /**< \D */
RE_TOK_WHITE, /**< \s */
RE_TOK_NOT_WHITE, /**< \S */
RE_TOK_WORD_CHAR, /**< \w */
RE_TOK_NOT_WORD_CHAR, /**< \W */
RE_TOK_START_CHAR_CLASS, /**< [ ] */
RE_TOK_START_INV_CHAR_CLASS, /**< [^ ] */
} re_token_type_t;
/**
@@ -68,7 +68,7 @@ typedef enum
/**
* RegExp constant of infinite
*/
#define RE_ITERATOR_INFINITE ((uint32_t)-1)
#define RE_ITERATOR_INFINITE ((uint32_t) - 1)
/**
* Maximum number of decimal escape digits