#define ANYOFD 19 /* 0x13 Like ANYOF, but /d is in effect */
#define ANYOFL 20 /* 0x14 Like ANYOF, but /l is in effect */
#define ANYOFPOSIXL 21 /* 0x15 Like ANYOFL, but matches [[:posix:]] classes */
-#define ANYOFM 22 /* 0x16 Like ANYOF, but matches an invariant byte as determined by the mask and arg */
-#define NANYOFM 23 /* 0x17 complement of ANYOFM */
-#define POSIXD 24 /* 0x18 Some [[:class:]] under /d; the FLAGS field gives which one */
-#define POSIXL 25 /* 0x19 Some [[:class:]] under /l; the FLAGS field gives which one */
-#define POSIXU 26 /* 0x1a Some [[:class:]] under /u; the FLAGS field gives which one */
-#define POSIXA 27 /* 0x1b Some [[:class:]] under /a; the FLAGS field gives which one */
-#define NPOSIXD 28 /* 0x1c complement of POSIXD, [[:^class:]] */
-#define NPOSIXL 29 /* 0x1d complement of POSIXL, [[:^class:]] */
-#define NPOSIXU 30 /* 0x1e complement of POSIXU, [[:^class:]] */
-#define NPOSIXA 31 /* 0x1f complement of POSIXA, [[:^class:]] */
-#define ASCII 32 /* 0x20 [[:ascii:]] */
-#define NASCII 33 /* 0x21 [[:^ascii:]] */
-#define CLUMP 34 /* 0x22 Match any extended grapheme cluster sequence */
-#define BRANCH 35 /* 0x23 Match this alternative, or the next... */
-#define EXACT 36 /* 0x24 Match this string (preceded by length). */
-#define EXACTL 37 /* 0x25 Like EXACT, but /l is in effect (used so locale-related warnings can be checked for). */
-#define EXACTF 38 /* 0x26 Match this non-UTF-8 string (not guaranteed to be folded) using /id rules (w/len). */
-#define EXACTFL 39 /* 0x27 Match this string (not guaranteed to be folded) using /il rules (w/len). */
-#define EXACTFU 40 /* 0x28 Match this string (folded iff in UTF-8, length in folding doesn't change if not in UTF-8) using /iu rules (w/len). */
-#define EXACTFAA 41 /* 0x29 Match this string (not guaranteed to be folded) using /iaa rules (w/len). */
-#define EXACTFU_SS 42 /* 0x2a Match this string (folded iff in UTF-8, length in folding may change even if not in UTF-8) using /iu rules (w/len). */
-#define EXACTFLU8 43 /* 0x2b Rare circumstances: like EXACTFU, but is under /l, UTF-8, folded, and everything in it is above 255. */
-#define EXACTFAA_NO_TRIE 44 /* 0x2c Match this string (which is not trie-able; not guaranteed to be folded) using /iaa rules (w/len). */
-#define EXACT_ONLY8 45 /* 0x2d Like EXACT, but no strings that aren't in UTF-8 can match */
-#define EXACTFU_ONLY8 46 /* 0x2e Like EXACTFU, but no strings that aren't in UTF-8 can match */
+#define ANYOFH 22 /* 0x16 Like ANYOF, but only has "High" matches, none in the bitmap */
+#define ANYOFM 23 /* 0x17 Like ANYOF, but matches an invariant byte as determined by the mask and arg */
+#define NANYOFM 24 /* 0x18 complement of ANYOFM */
+#define POSIXD 25 /* 0x19 Some [[:class:]] under /d; the FLAGS field gives which one */
+#define POSIXL 26 /* 0x1a Some [[:class:]] under /l; the FLAGS field gives which one */
+#define POSIXU 27 /* 0x1b Some [[:class:]] under /u; the FLAGS field gives which one */
+#define POSIXA 28 /* 0x1c Some [[:class:]] under /a; the FLAGS field gives which one */
+#define NPOSIXD 29 /* 0x1d complement of POSIXD, [[:^class:]] */
+#define NPOSIXL 30 /* 0x1e complement of POSIXL, [[:^class:]] */
+#define NPOSIXU 31 /* 0x1f complement of POSIXU, [[:^class:]] */
+#define NPOSIXA 32 /* 0x20 complement of POSIXA, [[:^class:]] */
+#define CLUMP 33 /* 0x21 Match any extended grapheme cluster sequence */
+#define BRANCH 34 /* 0x22 Match this alternative, or the next... */
+#define EXACT 35 /* 0x23 Match this string (preceded by length). */
+#define EXACTL 36 /* 0x24 Like EXACT, but /l is in effect (used so locale-related warnings can be checked for). */
+#define EXACTF 37 /* 0x25 Match this string using /id rules (w/len); (string not UTF-8, not guaranteed to be folded). */
+#define EXACTFL 38 /* 0x26 Match this string using /il rules (w/len); (string not guaranteed to be folded). */
+#define EXACTFU 39 /* 0x27 Match this string using /iu rules (w/len); (string folded iff in UTF-8; non-UTF8 folded length <= unfolded). */
+#define EXACTFAA 40 /* 0x28 Match this string using /iaa rules (w/len) (string folded iff in UTF-8; non-UTF8 folded length <= unfolded). */
+#define EXACTFUP 41 /* 0x29 Match this string using /iu rules (w/len); (string not UTF-8, not guaranteed to be folded; and its Problematic). */
+#define EXACTFLU8 42 /* 0x2a Like EXACTFU, but use /il, UTF-8, folded, and everything in it is above 255. */
+#define EXACTFAA_NO_TRIE 43 /* 0x2b Match this string using /iaa rules (w/len) (string not UTF-8, not guaranteed to be folded, not currently trie-able). */
+#define EXACT_ONLY8 44 /* 0x2c Like EXACT, but only UTF-8 encoded targets can match */
+#define EXACTFU_ONLY8 45 /* 0x2d Like EXACTFU, but only UTF-8 encoded targets can match */
+#define EXACTFU_S_EDGE 46 /* 0x2e /di rules, but nothing in it precludes /ui, except begins and/or ends with [Ss]; (string not UTF-8; compile-time only). */
#define NOTHING 47 /* 0x2f Match empty string. */
#define TAIL 48 /* 0x30 Match empty string. Can jump here from outside. */
#define STAR 49 /* 0x31 Match this (simple) thing 0 or more times. */
#define NREFFA 69 /* 0x45 Match already matched string, folded using unicode rules for non-utf8, no mixing ASCII, non-ASCII */
#define LONGJMP 70 /* 0x46 Jump far away. */
#define BRANCHJ 71 /* 0x47 BRANCH with long offset. */
-#define IFMATCH 72 /* 0x48 Succeeds if the following matches. */
-#define UNLESSM 73 /* 0x49 Fails if the following matches. */
+#define IFMATCH 72 /* 0x48 Succeeds if the following matches; non-zero flags "f" means lookbehind assertion starting "f" characters before current */
+#define UNLESSM 73 /* 0x49 Fails if the following matches; non-zero flags "f" means lookbehind assertion starting "f" characters before current */
#define SUSPEND 74 /* 0x4a "Independent" sub-RE. */
#define IFTHEN 75 /* 0x4b Switch, should be preceded by switcher. */
#define GROUPP 76 /* 0x4c Whether the group matched. */
ANYOF, /* ANYOFD */
ANYOF, /* ANYOFL */
ANYOF, /* ANYOFPOSIXL */
+ ANYOF, /* ANYOFH */
ANYOFM, /* ANYOFM */
ANYOFM, /* NANYOFM */
POSIXD, /* POSIXD */
NPOSIXD, /* NPOSIXL */
NPOSIXD, /* NPOSIXU */
NPOSIXD, /* NPOSIXA */
- ASCII, /* ASCII */
- ASCII, /* NASCII */
CLUMP, /* CLUMP */
BRANCH, /* BRANCH */
EXACT, /* EXACT */
EXACT, /* EXACTFL */
EXACT, /* EXACTFU */
EXACT, /* EXACTFAA */
- EXACT, /* EXACTFU_SS */
+ EXACT, /* EXACTFUP */
EXACT, /* EXACTFLU8 */
EXACT, /* EXACTFAA_NO_TRIE */
EXACT, /* EXACT_ONLY8 */
EXACT, /* EXACTFU_ONLY8 */
+ EXACT, /* EXACTFU_S_EDGE */
NOTHING, /* NOTHING */
NOTHING, /* TAIL */
STAR, /* STAR */
EXTRA_SIZE(struct regnode_charclass), /* ANYOFD */
EXTRA_SIZE(struct regnode_charclass), /* ANYOFL */
EXTRA_SIZE(struct regnode_charclass_posixl), /* ANYOFPOSIXL */
+ EXTRA_SIZE(struct regnode_1), /* ANYOFH */
EXTRA_SIZE(struct regnode_1), /* ANYOFM */
EXTRA_SIZE(struct regnode_1), /* NANYOFM */
0, /* POSIXD */
0, /* NPOSIXL */
0, /* NPOSIXU */
0, /* NPOSIXA */
- 0, /* ASCII */
- 0, /* NASCII */
0, /* CLUMP */
0, /* BRANCH */
0, /* EXACT */
0, /* EXACTFL */
0, /* EXACTFU */
0, /* EXACTFAA */
- 0, /* EXACTFU_SS */
+ 0, /* EXACTFUP */
0, /* EXACTFLU8 */
0, /* EXACTFAA_NO_TRIE */
0, /* EXACT_ONLY8 */
0, /* EXACTFU_ONLY8 */
+ 0, /* EXACTFU_S_EDGE */
0, /* NOTHING */
0, /* TAIL */
0, /* STAR */
0, /* ANYOFD */
0, /* ANYOFL */
0, /* ANYOFPOSIXL */
+ 0, /* ANYOFH */
0, /* ANYOFM */
0, /* NANYOFM */
0, /* POSIXD */
0, /* NPOSIXL */
0, /* NPOSIXU */
0, /* NPOSIXA */
- 0, /* ASCII */
- 0, /* NASCII */
0, /* CLUMP */
0, /* BRANCH */
0, /* EXACT */
0, /* EXACTFL */
0, /* EXACTFU */
0, /* EXACTFAA */
- 0, /* EXACTFU_SS */
+ 0, /* EXACTFUP */
0, /* EXACTFLU8 */
0, /* EXACTFAA_NO_TRIE */
0, /* EXACT_ONLY8 */
0, /* EXACTFU_ONLY8 */
+ 0, /* EXACTFU_S_EDGE */
0, /* NOTHING */
0, /* TAIL */
0, /* STAR */
"ANYOFD", /* 0x13 */
"ANYOFL", /* 0x14 */
"ANYOFPOSIXL", /* 0x15 */
- "ANYOFM", /* 0x16 */
- "NANYOFM", /* 0x17 */
- "POSIXD", /* 0x18 */
- "POSIXL", /* 0x19 */
- "POSIXU", /* 0x1a */
- "POSIXA", /* 0x1b */
- "NPOSIXD", /* 0x1c */
- "NPOSIXL", /* 0x1d */
- "NPOSIXU", /* 0x1e */
- "NPOSIXA", /* 0x1f */
- "ASCII", /* 0x20 */
- "NASCII", /* 0x21 */
- "CLUMP", /* 0x22 */
- "BRANCH", /* 0x23 */
- "EXACT", /* 0x24 */
- "EXACTL", /* 0x25 */
- "EXACTF", /* 0x26 */
- "EXACTFL", /* 0x27 */
- "EXACTFU", /* 0x28 */
- "EXACTFAA", /* 0x29 */
- "EXACTFU_SS", /* 0x2a */
- "EXACTFLU8", /* 0x2b */
- "EXACTFAA_NO_TRIE", /* 0x2c */
- "EXACT_ONLY8", /* 0x2d */
- "EXACTFU_ONLY8", /* 0x2e */
+ "ANYOFH", /* 0x16 */
+ "ANYOFM", /* 0x17 */
+ "NANYOFM", /* 0x18 */
+ "POSIXD", /* 0x19 */
+ "POSIXL", /* 0x1a */
+ "POSIXU", /* 0x1b */
+ "POSIXA", /* 0x1c */
+ "NPOSIXD", /* 0x1d */
+ "NPOSIXL", /* 0x1e */
+ "NPOSIXU", /* 0x1f */
+ "NPOSIXA", /* 0x20 */
+ "CLUMP", /* 0x21 */
+ "BRANCH", /* 0x22 */
+ "EXACT", /* 0x23 */
+ "EXACTL", /* 0x24 */
+ "EXACTF", /* 0x25 */
+ "EXACTFL", /* 0x26 */
+ "EXACTFU", /* 0x27 */
+ "EXACTFAA", /* 0x28 */
+ "EXACTFUP", /* 0x29 */
+ "EXACTFLU8", /* 0x2a */
+ "EXACTFAA_NO_TRIE", /* 0x2b */
+ "EXACT_ONLY8", /* 0x2c */
+ "EXACTFU_ONLY8", /* 0x2d */
+ "EXACTFU_S_EDGE", /* 0x2e */
"NOTHING", /* 0x2f */
"TAIL", /* 0x30 */
"STAR", /* 0x31 */
EXTCONST U8 PL_varies_bitmask[];
#else
EXTCONST U8 PL_varies_bitmask[] = {
- 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xFE, 0xF0, 0xBF, 0x0C, 0x00, 0x00, 0x00
+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xFE, 0xF0, 0xBF, 0x0C, 0x00, 0x00, 0x00
};
#endif /* DOINIT */
EXTCONST U8 PL_simple[] __attribute__deprecated__;
#else
EXTCONST U8 PL_simple[] __attribute__deprecated__ = {
- REG_ANY, SANY, ANYOF, ANYOFD, ANYOFL, ANYOFPOSIXL, ANYOFM, NANYOFM,
- POSIXD, POSIXL, POSIXU, POSIXA, NPOSIXD, NPOSIXL, NPOSIXU, NPOSIXA,
- ASCII, NASCII,
+ REG_ANY, SANY, ANYOF, ANYOFD, ANYOFL, ANYOFPOSIXL, ANYOFH, ANYOFM,
+ NANYOFM, POSIXD, POSIXL, POSIXU, POSIXA, NPOSIXD, NPOSIXL, NPOSIXU,
+ NPOSIXA,
0
};
#endif /* DOINIT */
EXTCONST U8 PL_simple_bitmask[];
#else
EXTCONST U8 PL_simple_bitmask[] = {
- 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#endif /* DOINIT */