X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/a9f8c7ac75c364c3e05305718f38c5f8ccd935d8..a9cea67c10bc154f974a3207d7ce3f81611266bc:/regnodes.h?ds=sidebyside diff --git a/regnodes.h b/regnodes.h index 9cddfd3..412a630 100644 --- a/regnodes.h +++ b/regnodes.h @@ -33,31 +33,31 @@ #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. */ @@ -83,8 +83,8 @@ #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. */ @@ -183,6 +183,7 @@ EXTCONST U8 PL_regkind[] = { ANYOF, /* ANYOFD */ ANYOF, /* ANYOFL */ ANYOF, /* ANYOFPOSIXL */ + ANYOF, /* ANYOFH */ ANYOFM, /* ANYOFM */ ANYOFM, /* NANYOFM */ POSIXD, /* POSIXD */ @@ -193,8 +194,6 @@ EXTCONST U8 PL_regkind[] = { NPOSIXD, /* NPOSIXL */ NPOSIXD, /* NPOSIXU */ NPOSIXD, /* NPOSIXA */ - ASCII, /* ASCII */ - ASCII, /* NASCII */ CLUMP, /* CLUMP */ BRANCH, /* BRANCH */ EXACT, /* EXACT */ @@ -203,11 +202,12 @@ EXTCONST U8 PL_regkind[] = { 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 */ @@ -334,6 +334,7 @@ static const U8 regarglen[] = { 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 */ @@ -344,8 +345,6 @@ static const U8 regarglen[] = { 0, /* NPOSIXL */ 0, /* NPOSIXU */ 0, /* NPOSIXA */ - 0, /* ASCII */ - 0, /* NASCII */ 0, /* CLUMP */ 0, /* BRANCH */ 0, /* EXACT */ @@ -354,11 +353,12 @@ static const U8 regarglen[] = { 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 */ @@ -441,6 +441,7 @@ static const char reg_off_by_arg[] = { 0, /* ANYOFD */ 0, /* ANYOFL */ 0, /* ANYOFPOSIXL */ + 0, /* ANYOFH */ 0, /* ANYOFM */ 0, /* NANYOFM */ 0, /* POSIXD */ @@ -451,8 +452,6 @@ static const char reg_off_by_arg[] = { 0, /* NPOSIXL */ 0, /* NPOSIXU */ 0, /* NPOSIXA */ - 0, /* ASCII */ - 0, /* NASCII */ 0, /* CLUMP */ 0, /* BRANCH */ 0, /* EXACT */ @@ -461,11 +460,12 @@ static const char reg_off_by_arg[] = { 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 */ @@ -554,31 +554,31 @@ EXTCONST char * const PL_reg_name[] = { "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 */ @@ -768,7 +768,7 @@ EXTCONST U8 PL_varies[] __attribute__deprecated__ = { 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 */ @@ -780,9 +780,9 @@ EXTCONST U8 PL_varies_bitmask[] = { 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 */ @@ -791,7 +791,7 @@ EXTCONST U8 PL_simple[] __attribute__deprecated__ = { 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 */