summaryrefslogtreecommitdiff
path: root/regnodes.h
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2020-10-14 08:27:41 -0600
committerKarl Williamson <khw@cpan.org>2020-10-14 08:45:37 -0600
commitce553cf576f837c8b843c307e2e1c957d8bab24d (patch)
tree9483bd6ef197e2efbe6a5470af1e9dab49e41c5b /regnodes.h
parent519d76f5929997820de5bb942a6e6be7f1bf60bd (diff)
downloadperl-ce553cf576f837c8b843c307e2e1c957d8bab24d.tar.gz
regen/regcomp.pl: Generate #defines for UTF8ness
This causes #defines to be generated for regexec.c to use in switch statements, so that for each opcode there that is a case: there are actually 4 cases, for the the target being UTF-8 or not, combined with the pattern being UTF-8 or not. This will be used in future commits to simplify things.
Diffstat (limited to 'regnodes.h')
-rw-r--r--regnodes.h1220
1 files changed, 1068 insertions, 152 deletions
diff --git a/regnodes.h b/regnodes.h
index 1f39903cb0..d504d8226e 100644
--- a/regnodes.h
+++ b/regnodes.h
@@ -9,159 +9,1075 @@
#define REGNODE_MAX 109
#define REGMATCH_STATE_MAX 149
-#define END 0 /* 0000 End of program. */
-#define SUCCEED 1 /* 0x01 Return from a subroutine, basically. */
-#define SBOL 2 /* 0x02 Match "" at beginning of line: /^/, /\A/ */
-#define BOL 2 /* 0x02 type alias */
-#define MBOL 3 /* 0x03 Same, assuming multiline: /^/m */
-#define SEOL 4 /* 0x04 Match "" at end of line: /$/ */
-#define EOL 4 /* 0x04 type alias */
-#define MEOL 5 /* 0x05 Same, assuming multiline: /$/m */
-#define EOS 6 /* 0x06 Match "" at end of string: /\z/ */
-#define GPOS 7 /* 0x07 Matches where last m//g left off. */
-#define BOUND 8 /* 0x08 Like BOUNDA for non-utf8, otherwise like BOUNDU */
-#define BOUNDL 9 /* 0x09 Like BOUND/BOUNDU, but \w and \W are defined by current locale */
-#define BOUNDU 10 /* 0x0a Match "" at any boundary of a given type using /u rules. */
-#define BOUNDA 11 /* 0x0b Match "" at any boundary between \w\W or \W\w, where \w is [_a-zA-Z0-9] */
-#define NBOUND 12 /* 0x0c Like NBOUNDA for non-utf8, otherwise like BOUNDU */
-#define NBOUNDL 13 /* 0x0d Like NBOUND/NBOUNDU, but \w and \W are defined by current locale */
-#define NBOUNDU 14 /* 0x0e Match "" at any non-boundary of a given type using using /u rules. */
-#define NBOUNDA 15 /* 0x0f Match "" betweeen any \w\w or \W\W, where \w is [_a-zA-Z0-9] */
-#define REG_ANY 16 /* 0x10 Match any one character (except newline). */
-#define SANY 17 /* 0x11 Match any one character. */
-#define ANYOF 18 /* 0x12 Match character in (or not in) this class, single char match only */
-#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 ANYOFH 22 /* 0x16 Like ANYOF, but only has "High" matches, none in the bitmap; the flags field contains the lowest matchable UTF-8 start byte */
-#define ANYOFHb 23 /* 0x17 Like ANYOFH, but all matches share the same UTF-8 start byte, given in the flags field */
-#define ANYOFHr 24 /* 0x18 Like ANYOFH, but the flags field contains packed bounds for all matchable UTF-8 start bytes. */
-#define ANYOFHs 25 /* 0x19 Like ANYOFHb, but has a string field that gives the leading matchable UTF-8 bytes; flags field is len */
-#define ANYOFR 26 /* 0x1a Matches any character in the range given by its packed args: upper 12 bits is the max delta from the base lower 20; the flags field contains the lowest matchable UTF-8 start byte */
-#define ANYOFRb 27 /* 0x1b Like ANYOFR, but all matches share the same UTF-8 start byte, given in the flags field */
-#define ANYOFM 28 /* 0x1c Like ANYOF, but matches an invariant byte as determined by the mask and arg */
-#define NANYOFM 29 /* 0x1d complement of ANYOFM */
-#define POSIXD 30 /* 0x1e Some [[:class:]] under /d; the FLAGS field gives which one */
-#define POSIXL 31 /* 0x1f Some [[:class:]] under /l; the FLAGS field gives which one */
-#define POSIXU 32 /* 0x20 Some [[:class:]] under /u; the FLAGS field gives which one */
-#define POSIXA 33 /* 0x21 Some [[:class:]] under /a; the FLAGS field gives which one */
-#define NPOSIXD 34 /* 0x22 complement of POSIXD, [[:^class:]] */
-#define NPOSIXL 35 /* 0x23 complement of POSIXL, [[:^class:]] */
-#define NPOSIXU 36 /* 0x24 complement of POSIXU, [[:^class:]] */
-#define NPOSIXA 37 /* 0x25 complement of POSIXA, [[:^class:]] */
-#define CLUMP 38 /* 0x26 Match any extended grapheme cluster sequence */
-#define BRANCH 39 /* 0x27 Match this alternative, or the next... */
-#define EXACT 40 /* 0x28 Match this string (flags field is the length). */
-#define LEXACT 41 /* 0x29 Match this long string (preceded by length; flags unused). */
-#define EXACTL 42 /* 0x2a Like EXACT, but /l is in effect (used so locale-related warnings can be checked for) */
-#define EXACTF 43 /* 0x2b Like EXACT, but match using /id rules; (string not UTF-8, ASCII folded; non-ASCII not) */
-#define EXACTFL 44 /* 0x2c Like EXACT, but match using /il rules; (string not likely to be folded) */
-#define EXACTFU 45 /* 0x2d Like EXACT, but match using /iu rules; (string folded) */
-#define EXACTFAA 46 /* 0x2e Like EXACT, but match using /iaa rules; (string folded except in non-UTF8 patterns: MICRO, SHARP S; folded length <= unfolded) */
-#define EXACTFUP 47 /* 0x2f Like EXACT, but match using /iu rules; (string not UTF-8, folded except MICRO, SHARP S: hence Problematic) */
-#define EXACTFLU8 48 /* 0x30 Like EXACTFU, but use /il, UTF-8, (string is folded, and everything in it is above 255 */
-#define EXACTFAA_NO_TRIE 49 /* 0x31 Like EXACT, but match using /iaa rules (string not UTF-8, not guaranteed to be folded, not currently trie-able) */
-#define EXACT_REQ8 50 /* 0x32 Like EXACT, but only UTF-8 encoded targets can match */
-#define LEXACT_REQ8 51 /* 0x33 Like LEXACT, but only UTF-8 encoded targets can match */
-#define EXACTFU_REQ8 52 /* 0x34 Like EXACTFU, but only UTF-8 encoded targets can match */
-#define EXACTFU_S_EDGE 53 /* 0x35 /di rules, but nothing in it precludes /ui, except begins and/or ends with [Ss]; (string not UTF-8; compile-time only) */
-#define LNBREAK 54 /* 0x36 generic newline pattern */
-#define TRIE 55 /* 0x37 Match many EXACT(F[ALU]?)? at once. flags==type */
-#define TRIEC 56 /* 0x38 Same as TRIE, but with embedded charclass data */
-#define AHOCORASICK 57 /* 0x39 Aho Corasick stclass. flags==type */
-#define AHOCORASICKC 58 /* 0x3a Same as AHOCORASICK, but with embedded charclass data */
-#define NOTHING 59 /* 0x3b Match empty string. */
-#define TAIL 60 /* 0x3c Match empty string. Can jump here from outside. */
-#define STAR 61 /* 0x3d Match this (simple) thing 0 or more times. */
-#define PLUS 62 /* 0x3e Match this (simple) thing 1 or more times. */
-#define CURLY 63 /* 0x3f Match this simple thing {n,m} times. */
-#define CURLYN 64 /* 0x40 Capture next-after-this simple thing */
-#define CURLYM 65 /* 0x41 Capture this medium-complex thing {n,m} times. */
-#define CURLYX 66 /* 0x42 Match this complex thing {n,m} times. */
-#define WHILEM 67 /* 0x43 Do curly processing and see if rest matches. */
-#define OPEN 68 /* 0x44 Mark this point in input as start of #n. */
-#define CLOSE 69 /* 0x45 Close corresponding OPEN of #n. */
-#define SROPEN 70 /* 0x46 Same as OPEN, but for script run */
-#define SRCLOSE 71 /* 0x47 Close preceding SROPEN */
-#define REF 72 /* 0x48 Match some already matched string */
-#define REFF 73 /* 0x49 Match already matched string, using /di rules. */
-#define REFFL 74 /* 0x4a Match already matched string, using /li rules. */
-#define REFFU 75 /* 0x4b Match already matched string, usng /ui. */
-#define REFFA 76 /* 0x4c Match already matched string, using /aai rules. */
-#define REFN 77 /* 0x4d Match some already matched string */
-#define REFFN 78 /* 0x4e Match already matched string, using /di rules. */
-#define REFFLN 79 /* 0x4f Match already matched string, using /li rules. */
-#define REFFUN 80 /* 0x50 Match already matched string, using /ui rules. */
-#define REFFAN 81 /* 0x51 Match already matched string, using /aai rules. */
-#define LONGJMP 82 /* 0x52 Jump far away. */
-#define BRANCHJ 83 /* 0x53 BRANCH with long offset. */
-#define IFMATCH 84 /* 0x54 Succeeds if the following matches; non-zero flags "f", next_off "o" means lookbehind assertion starting "f..(f-o)" characters before current */
-#define UNLESSM 85 /* 0x55 Fails if the following matches; non-zero flags "f", next_off "o" means lookbehind assertion starting "f..(f-o)" characters before current */
-#define SUSPEND 86 /* 0x56 "Independent" sub-RE. */
-#define IFTHEN 87 /* 0x57 Switch, should be preceded by switcher. */
-#define GROUPP 88 /* 0x58 Whether the group matched. */
-#define EVAL 89 /* 0x59 Execute some Perl code. */
-#define MINMOD 90 /* 0x5a Next operator is not greedy. */
-#define LOGICAL 91 /* 0x5b Next opcode should set the flag only. */
-#define RENUM 92 /* 0x5c Group with independently numbered parens. */
-#define GOSUB 93 /* 0x5d recurse to paren arg1 at (signed) ofs arg2 */
-#define GROUPPN 94 /* 0x5e Whether the group matched. */
-#define INSUBP 95 /* 0x5f Whether we are in a specific recurse. */
-#define DEFINEP 96 /* 0x60 Never execute directly. */
-#define ENDLIKE 97 /* 0x61 Used only for the type field of verbs */
-#define OPFAIL 98 /* 0x62 Same as (?!), but with verb arg */
-#define ACCEPT 99 /* 0x63 Accepts the current matched string, with verbar */
-#define VERB 100 /* 0x64 Used only for the type field of verbs */
-#define PRUNE 101 /* 0x65 Pattern fails at this startpoint if no-backtracking through this */
-#define MARKPOINT 102 /* 0x66 Push the current location for rollback by cut. */
-#define SKIP 103 /* 0x67 On failure skip forward (to the mark) before retrying */
-#define COMMIT 104 /* 0x68 Pattern fails outright if backtracking through this */
-#define CUTGROUP 105 /* 0x69 On failure go to the next alternation in the group */
-#define KEEPS 106 /* 0x6a $& begins here. */
-#define OPTIMIZED 107 /* 0x6b Placeholder for dump. */
-#define PSEUDO 108 /* 0x6c Pseudo opcode for internal use. */
-#define REGEX_SET 109 /* 0x6d Regex set, temporary node used in pre-optimization compilation */
+/* -- For regexec.c to switch on target being utf8 (t8) or not (tb, b='byte');
+ * same with pattern (p8, pb) -- */
+#define with_tp_UTF8ness(op, t_utf8, p_utf8) \
+ (((op) << 2) + (cBOOL(t_utf8) << 1) + cBOOL(p_utf8))
+
+/* The #defines below give both the basic regnode and the expanded version for
+ switching on utf8ness */
+#define END 0 /* 0x00 End of program. */
+#define END_tb_pb 0 /* 0x000 */
+#define END_tb_p8 1 /* 0x001 */
+#define END_t8_pb 2 /* 0x002 */
+#define END_t8_p8 3 /* 0x003 */
+
+#define SUCCEED 1 /* 0x01 Return from a subroutine,
+ basically. */
+#define SUCCEED_tb_pb 4 /* 0x004 */
+#define SUCCEED_tb_p8 5 /* 0x005 */
+#define SUCCEED_t8_pb 6 /* 0x006 */
+#define SUCCEED_t8_p8 7 /* 0x007 */
+
+#define SBOL 2 /* 0x02 Match "" at beginning of
+ line: /^/, /\A/ */
+#define SBOL_tb_pb 8 /* 0x008 */
+#define SBOL_tb_p8 9 /* 0x009 */
+#define SBOL_t8_pb 10 /* 0x00a */
+#define SBOL_t8_p8 11 /* 0x00b */
+
+#define BOL 2 /* 0x02 Match "" at beginning of
+ line: /^/, /\A/ */
+#define BOL_tb_pb 8 /* 0x008 */
+#define BOL_tb_p8 9 /* 0x009 */
+#define BOL_t8_pb 10 /* 0x00a */
+#define BOL_t8_p8 11 /* 0x00b */
+
+#define MBOL 3 /* 0x03 Same, assuming multiline:
+ /^/m */
+#define MBOL_tb_pb 12 /* 0x00c */
+#define MBOL_tb_p8 13 /* 0x00d */
+#define MBOL_t8_pb 14 /* 0x00e */
+#define MBOL_t8_p8 15 /* 0x00f */
+
+#define SEOL 4 /* 0x04 Match "" at end of line:
+ /$/ */
+#define SEOL_tb_pb 16 /* 0x010 */
+#define SEOL_tb_p8 17 /* 0x011 */
+#define SEOL_t8_pb 18 /* 0x012 */
+#define SEOL_t8_p8 19 /* 0x013 */
+
+#define EOL 4 /* 0x04 Match "" at end of line:
+ /$/ */
+#define EOL_tb_pb 16 /* 0x010 */
+#define EOL_tb_p8 17 /* 0x011 */
+#define EOL_t8_pb 18 /* 0x012 */
+#define EOL_t8_p8 19 /* 0x013 */
+
+#define MEOL 5 /* 0x05 Same, assuming multiline:
+ /$/m */
+#define MEOL_tb_pb 20 /* 0x014 */
+#define MEOL_tb_p8 21 /* 0x015 */
+#define MEOL_t8_pb 22 /* 0x016 */
+#define MEOL_t8_p8 23 /* 0x017 */
+
+#define EOS 6 /* 0x06 Match "" at end of string:
+ /\z/ */
+#define EOS_tb_pb 24 /* 0x018 */
+#define EOS_tb_p8 25 /* 0x019 */
+#define EOS_t8_pb 26 /* 0x01a */
+#define EOS_t8_p8 27 /* 0x01b */
+
+#define GPOS 7 /* 0x07 Matches where last m//g
+ left off. */
+#define GPOS_tb_pb 28 /* 0x01c */
+#define GPOS_tb_p8 29 /* 0x01d */
+#define GPOS_t8_pb 30 /* 0x01e */
+#define GPOS_t8_p8 31 /* 0x01f */
+
+#define BOUND 8 /* 0x08 Like BOUNDA for non-utf8,
+ otherwise like BOUNDU */
+#define BOUND_tb_pb 32 /* 0x020 */
+#define BOUND_tb_p8 33 /* 0x021 */
+#define BOUND_t8_pb 34 /* 0x022 */
+#define BOUND_t8_p8 35 /* 0x023 */
+
+#define BOUNDL 9 /* 0x09 Like BOUND/BOUNDU, but \w
+ and \W are defined by current
+ locale */
+#define BOUNDL_tb_pb 36 /* 0x024 */
+#define BOUNDL_tb_p8 37 /* 0x025 */
+#define BOUNDL_t8_pb 38 /* 0x026 */
+#define BOUNDL_t8_p8 39 /* 0x027 */
+
+#define BOUNDU 10 /* 0x0a Match "" at any boundary of
+ a given type using /u rules. */
+#define BOUNDU_tb_pb 40 /* 0x028 */
+#define BOUNDU_tb_p8 41 /* 0x029 */
+#define BOUNDU_t8_pb 42 /* 0x02a */
+#define BOUNDU_t8_p8 43 /* 0x02b */
+
+#define BOUNDA 11 /* 0x0b Match "" at any boundary
+ between \w\W or \W\w, where \w
+ is [_a-zA-Z0-9] */
+#define BOUNDA_tb_pb 44 /* 0x02c */
+#define BOUNDA_tb_p8 45 /* 0x02d */
+#define BOUNDA_t8_pb 46 /* 0x02e */
+#define BOUNDA_t8_p8 47 /* 0x02f */
+
+#define NBOUND 12 /* 0x0c Like NBOUNDA for non-utf8,
+ otherwise like BOUNDU */
+#define NBOUND_tb_pb 48 /* 0x030 */
+#define NBOUND_tb_p8 49 /* 0x031 */
+#define NBOUND_t8_pb 50 /* 0x032 */
+#define NBOUND_t8_p8 51 /* 0x033 */
+
+#define NBOUNDL 13 /* 0x0d Like NBOUND/NBOUNDU, but \w
+ and \W are defined by current
+ locale */
+#define NBOUNDL_tb_pb 52 /* 0x034 */
+#define NBOUNDL_tb_p8 53 /* 0x035 */
+#define NBOUNDL_t8_pb 54 /* 0x036 */
+#define NBOUNDL_t8_p8 55 /* 0x037 */
+
+#define NBOUNDU 14 /* 0x0e Match "" at any
+ non-boundary of a given type
+ using using /u rules. */
+#define NBOUNDU_tb_pb 56 /* 0x038 */
+#define NBOUNDU_tb_p8 57 /* 0x039 */
+#define NBOUNDU_t8_pb 58 /* 0x03a */
+#define NBOUNDU_t8_p8 59 /* 0x03b */
+
+#define NBOUNDA 15 /* 0x0f Match "" betweeen any \w\w
+ or \W\W, where \w is
+ [_a-zA-Z0-9] */
+#define NBOUNDA_tb_pb 60 /* 0x03c */
+#define NBOUNDA_tb_p8 61 /* 0x03d */
+#define NBOUNDA_t8_pb 62 /* 0x03e */
+#define NBOUNDA_t8_p8 63 /* 0x03f */
+
+#define REG_ANY 16 /* 0x10 Match any one character
+ (except newline). */
+#define REG_ANY_tb_pb 64 /* 0x040 */
+#define REG_ANY_tb_p8 65 /* 0x041 */
+#define REG_ANY_t8_pb 66 /* 0x042 */
+#define REG_ANY_t8_p8 67 /* 0x043 */
+
+#define SANY 17 /* 0x11 Match any one character. */
+#define SANY_tb_pb 68 /* 0x044 */
+#define SANY_tb_p8 69 /* 0x045 */
+#define SANY_t8_pb 70 /* 0x046 */
+#define SANY_t8_p8 71 /* 0x047 */
+
+#define ANYOF 18 /* 0x12 Match character in (or not
+ in) this class, single char
+ match only */
+#define ANYOF_tb_pb 72 /* 0x048 */
+#define ANYOF_tb_p8 73 /* 0x049 */
+#define ANYOF_t8_pb 74 /* 0x04a */
+#define ANYOF_t8_p8 75 /* 0x04b */
+
+#define ANYOFD 19 /* 0x13 Like ANYOF, but /d is in
+ effect */
+#define ANYOFD_tb_pb 76 /* 0x04c */
+#define ANYOFD_tb_p8 77 /* 0x04d */
+#define ANYOFD_t8_pb 78 /* 0x04e */
+#define ANYOFD_t8_p8 79 /* 0x04f */
+
+#define ANYOFL 20 /* 0x14 Like ANYOF, but /l is in
+ effect */
+#define ANYOFL_tb_pb 80 /* 0x050 */
+#define ANYOFL_tb_p8 81 /* 0x051 */
+#define ANYOFL_t8_pb 82 /* 0x052 */
+#define ANYOFL_t8_p8 83 /* 0x053 */
+
+#define ANYOFPOSIXL 21 /* 0x15 Like ANYOFL, but matches
+ [[:posix:]] classes */
+#define ANYOFPOSIXL_tb_pb 84 /* 0x054 */
+#define ANYOFPOSIXL_tb_p8 85 /* 0x055 */
+#define ANYOFPOSIXL_t8_pb 86 /* 0x056 */
+#define ANYOFPOSIXL_t8_p8 87 /* 0x057 */
+
+#define ANYOFH 22 /* 0x16 Like ANYOF, but only has
+ "High" matches, none in the
+ bitmap; the flags field contains
+ the lowest matchable UTF-8 start
+ byte */
+#define ANYOFH_tb_pb 88 /* 0x058 */
+#define ANYOFH_tb_p8 89 /* 0x059 */
+#define ANYOFH_t8_pb 90 /* 0x05a */
+#define ANYOFH_t8_p8 91 /* 0x05b */
+
+#define ANYOFHb 23 /* 0x17 Like ANYOFH, but all
+ matches share the same UTF-8
+ start byte, given in the flags
+ field */
+#define ANYOFHb_tb_pb 92 /* 0x05c */
+#define ANYOFHb_tb_p8 93 /* 0x05d */
+#define ANYOFHb_t8_pb 94 /* 0x05e */
+#define ANYOFHb_t8_p8 95 /* 0x05f */
+
+#define ANYOFHr 24 /* 0x18 Like ANYOFH, but the flags
+ field contains packed bounds for
+ all matchable UTF-8 start bytes.
+ */
+#define ANYOFHr_tb_pb 96 /* 0x060 */
+#define ANYOFHr_tb_p8 97 /* 0x061 */
+#define ANYOFHr_t8_pb 98 /* 0x062 */
+#define ANYOFHr_t8_p8 99 /* 0x063 */
+
+#define ANYOFHs 25 /* 0x19 Like ANYOFHb, but has a
+ string field that gives the
+ leading matchable UTF-8 bytes;
+ flags field is len */
+#define ANYOFHs_tb_pb 100 /* 0x064 */
+#define ANYOFHs_tb_p8 101 /* 0x065 */
+#define ANYOFHs_t8_pb 102 /* 0x066 */
+#define ANYOFHs_t8_p8 103 /* 0x067 */
+
+#define ANYOFR 26 /* 0x1a Matches any character in
+ the range given by its packed
+ args: upper 12 bits is the max
+ delta from the base lower 20;
+ the flags field contains the
+ lowest matchable UTF-8 start
+ byte */
+#define ANYOFR_tb_pb 104 /* 0x068 */
+#define ANYOFR_tb_p8 105 /* 0x069 */
+#define ANYOFR_t8_pb 106 /* 0x06a */
+#define ANYOFR_t8_p8 107 /* 0x06b */
+
+#define ANYOFRb 27 /* 0x1b Like ANYOFR, but all
+ matches share the same UTF-8
+ start byte, given in the flags
+ field */
+#define ANYOFRb_tb_pb 108 /* 0x06c */
+#define ANYOFRb_tb_p8 109 /* 0x06d */
+#define ANYOFRb_t8_pb 110 /* 0x06e */
+#define ANYOFRb_t8_p8 111 /* 0x06f */
+
+#define ANYOFM 28 /* 0x1c Like ANYOF, but matches an
+ invariant byte as determined by
+ the mask and arg */
+#define ANYOFM_tb_pb 112 /* 0x070 */
+#define ANYOFM_tb_p8 113 /* 0x071 */
+#define ANYOFM_t8_pb 114 /* 0x072 */
+#define ANYOFM_t8_p8 115 /* 0x073 */
+
+#define NANYOFM 29 /* 0x1d complement of ANYOFM */
+#define NANYOFM_tb_pb 116 /* 0x074 */
+#define NANYOFM_tb_p8 117 /* 0x075 */
+#define NANYOFM_t8_pb 118 /* 0x076 */
+#define NANYOFM_t8_p8 119 /* 0x077 */
+
+#define POSIXD 30 /* 0x1e Some [[:class:]] under /d;
+ the FLAGS field gives which one
+ */
+#define POSIXD_tb_pb 120 /* 0x078 */
+#define POSIXD_tb_p8 121 /* 0x079 */
+#define POSIXD_t8_pb 122 /* 0x07a */
+#define POSIXD_t8_p8 123 /* 0x07b */
+
+#define POSIXL 31 /* 0x1f Some [[:class:]] under /l;
+ the FLAGS field gives which one
+ */
+#define POSIXL_tb_pb 124 /* 0x07c */
+#define POSIXL_tb_p8 125 /* 0x07d */
+#define POSIXL_t8_pb 126 /* 0x07e */
+#define POSIXL_t8_p8 127 /* 0x07f */
+
+#define POSIXU 32 /* 0x20 Some [[:class:]] under /u;
+ the FLAGS field gives which one
+ */
+#define POSIXU_tb_pb 128 /* 0x080 */
+#define POSIXU_tb_p8 129 /* 0x081 */
+#define POSIXU_t8_pb 130 /* 0x082 */
+#define POSIXU_t8_p8 131 /* 0x083 */
+
+#define POSIXA 33 /* 0x21 Some [[:class:]] under /a;
+ the FLAGS field gives which one
+ */
+#define POSIXA_tb_pb 132 /* 0x084 */
+#define POSIXA_tb_p8 133 /* 0x085 */
+#define POSIXA_t8_pb 134 /* 0x086 */
+#define POSIXA_t8_p8 135 /* 0x087 */
+
+#define NPOSIXD 34 /* 0x22 complement of POSIXD,
+ [[:^class:]] */
+#define NPOSIXD_tb_pb 136 /* 0x088 */
+#define NPOSIXD_tb_p8 137 /* 0x089 */
+#define NPOSIXD_t8_pb 138 /* 0x08a */
+#define NPOSIXD_t8_p8 139 /* 0x08b */
+
+#define NPOSIXL 35 /* 0x23 complement of POSIXL,
+ [[:^class:]] */
+#define NPOSIXL_tb_pb 140 /* 0x08c */
+#define NPOSIXL_tb_p8 141 /* 0x08d */
+#define NPOSIXL_t8_pb 142 /* 0x08e */
+#define NPOSIXL_t8_p8 143 /* 0x08f */
+
+#define NPOSIXU 36 /* 0x24 complement of POSIXU,
+ [[:^class:]] */
+#define NPOSIXU_tb_pb 144 /* 0x090 */
+#define NPOSIXU_tb_p8 145 /* 0x091 */
+#define NPOSIXU_t8_pb 146 /* 0x092 */
+#define NPOSIXU_t8_p8 147 /* 0x093 */
+
+#define NPOSIXA 37 /* 0x25 complement of POSIXA,
+ [[:^class:]] */
+#define NPOSIXA_tb_pb 148 /* 0x094 */
+#define NPOSIXA_tb_p8 149 /* 0x095 */
+#define NPOSIXA_t8_pb 150 /* 0x096 */
+#define NPOSIXA_t8_p8 151 /* 0x097 */
+
+#define CLUMP 38 /* 0x26 Match any extended grapheme
+ cluster sequence */
+#define CLUMP_tb_pb 152 /* 0x098 */
+#define CLUMP_tb_p8 153 /* 0x099 */
+#define CLUMP_t8_pb 154 /* 0x09a */
+#define CLUMP_t8_p8 155 /* 0x09b */
+
+#define BRANCH 39 /* 0x27 Match this alternative, or
+ the next... */
+#define BRANCH_tb_pb 156 /* 0x09c */
+#define BRANCH_tb_p8 157 /* 0x09d */
+#define BRANCH_t8_pb 158 /* 0x09e */
+#define BRANCH_t8_p8 159 /* 0x09f */
+
+#define EXACT 40 /* 0x28 Match this string (flags
+ field is the length). */
+#define EXACT_tb_pb 160 /* 0x0a0 */
+#define EXACT_tb_p8 161 /* 0x0a1 */
+#define EXACT_t8_pb 162 /* 0x0a2 */
+#define EXACT_t8_p8 163 /* 0x0a3 */
+
+#define LEXACT 41 /* 0x29 Match this long string
+ (preceded by length; flags
+ unused). */
+#define LEXACT_tb_pb 164 /* 0x0a4 */
+#define LEXACT_tb_p8 165 /* 0x0a5 */
+#define LEXACT_t8_pb 166 /* 0x0a6 */
+#define LEXACT_t8_p8 167 /* 0x0a7 */
+
+#define EXACTL 42 /* 0x2a Like EXACT, but /l is in
+ effect (used so locale-related
+ warnings can be checked for) */
+#define EXACTL_tb_pb 168 /* 0x0a8 */
+#define EXACTL_tb_p8 169 /* 0x0a9 */
+#define EXACTL_t8_pb 170 /* 0x0aa */
+#define EXACTL_t8_p8 171 /* 0x0ab */
+
+#define EXACTF 43 /* 0x2b Like EXACT, but match using
+ /id rules; (string not UTF-8,
+ ASCII folded; non-ASCII not) */
+#define EXACTF_tb_pb 172 /* 0x0ac */
+#define EXACTF_tb_p8 173 /* 0x0ad */
+#define EXACTF_t8_pb 174 /* 0x0ae */
+#define EXACTF_t8_p8 175 /* 0x0af */
+
+#define EXACTFL 44 /* 0x2c Like EXACT, but match using
+ /il rules; (string not likely to
+ be folded) */
+#define EXACTFL_tb_pb 176 /* 0x0b0 */
+#define EXACTFL_tb_p8 177 /* 0x0b1 */
+#define EXACTFL_t8_pb 178 /* 0x0b2 */
+#define EXACTFL_t8_p8 179 /* 0x0b3 */
+
+#define EXACTFU 45 /* 0x2d Like EXACT, but match using
+ /iu rules; (string folded) */
+#define EXACTFU_tb_pb 180 /* 0x0b4 */
+#define EXACTFU_tb_p8 181 /* 0x0b5 */
+#define EXACTFU_t8_pb 182 /* 0x0b6 */
+#define EXACTFU_t8_p8 183 /* 0x0b7 */
+
+#define EXACTFAA 46 /* 0x2e Like EXACT, but match using
+ /iaa rules; (string folded
+ except in non-UTF8 patterns:
+ MICRO, SHARP S; folded length <=
+ unfolded) */
+#define EXACTFAA_tb_pb 184 /* 0x0b8 */
+#define EXACTFAA_tb_p8 185 /* 0x0b9 */
+#define EXACTFAA_t8_pb 186 /* 0x0ba */
+#define EXACTFAA_t8_p8 187 /* 0x0bb */
+
+#define EXACTFUP 47 /* 0x2f Like EXACT, but match using
+ /iu rules; (string not UTF-8,
+ folded except MICRO, SHARP S:
+ hence Problematic) */
+#define EXACTFUP_tb_pb 188 /* 0x0bc */
+#define EXACTFUP_tb_p8 189 /* 0x0bd */
+#define EXACTFUP_t8_pb 190 /* 0x0be */
+#define EXACTFUP_t8_p8 191 /* 0x0bf */
+
+#define EXACTFLU8 48 /* 0x30 Like EXACTFU, but use /il,
+ UTF-8, (string is folded, and
+ everything in it is above 255 */
+#define EXACTFLU8_tb_pb 192 /* 0x0c0 */
+#define EXACTFLU8_tb_p8 193 /* 0x0c1 */
+#define EXACTFLU8_t8_pb 194 /* 0x0c2 */
+#define EXACTFLU8_t8_p8 195 /* 0x0c3 */
+
+#define EXACTFAA_NO_TRIE 49 /* 0x31 Like EXACT, but match using
+ /iaa rules (string not UTF-8,
+ not guaranteed to be folded, not
+ currently trie-able) */
+#define EXACTFAA_NO_TRIE_tb_pb 196 /* 0x0c4 */
+#define EXACTFAA_NO_TRIE_tb_p8 197 /* 0x0c5 */
+#define EXACTFAA_NO_TRIE_t8_pb 198 /* 0x0c6 */
+#define EXACTFAA_NO_TRIE_t8_p8 199 /* 0x0c7 */
+
+#define EXACT_REQ8 50 /* 0x32 Like EXACT, but only UTF-8
+ encoded targets can match */
+#define EXACT_REQ8_tb_pb 200 /* 0x0c8 */
+#define EXACT_REQ8_tb_p8 201 /* 0x0c9 */
+#define EXACT_REQ8_t8_pb 202 /* 0x0ca */
+#define EXACT_REQ8_t8_p8 203 /* 0x0cb */
+
+#define LEXACT_REQ8 51 /* 0x33 Like LEXACT, but only UTF-8
+ encoded targets can match */
+#define LEXACT_REQ8_tb_pb 204 /* 0x0cc */
+#define LEXACT_REQ8_tb_p8 205 /* 0x0cd */
+#define LEXACT_REQ8_t8_pb 206 /* 0x0ce */
+#define LEXACT_REQ8_t8_p8 207 /* 0x0cf */
+
+#define EXACTFU_REQ8 52 /* 0x34 Like EXACTFU, but only
+ UTF-8 encoded targets can match
+ */
+#define EXACTFU_REQ8_tb_pb 208 /* 0x0d0 */
+#define EXACTFU_REQ8_tb_p8 209 /* 0x0d1 */
+#define EXACTFU_REQ8_t8_pb 210 /* 0x0d2 */
+#define EXACTFU_REQ8_t8_p8 211 /* 0x0d3 */
+
+#define EXACTFU_S_EDGE 53 /* 0x35 /di rules, but nothing in
+ it precludes /ui, except begins
+ and/or ends with [Ss]; (string
+ not UTF-8; compile-time only) */
+#define EXACTFU_S_EDGE_tb_pb 212 /* 0x0d4 */
+#define EXACTFU_S_EDGE_tb_p8 213 /* 0x0d5 */
+#define EXACTFU_S_EDGE_t8_pb 214 /* 0x0d6 */
+#define EXACTFU_S_EDGE_t8_p8 215 /* 0x0d7 */
+
+#define LNBREAK 54 /* 0x36 generic newline pattern */
+#define LNBREAK_tb_pb 216 /* 0x0d8 */
+#define LNBREAK_tb_p8 217 /* 0x0d9 */
+#define LNBREAK_t8_pb 218 /* 0x0da */
+#define LNBREAK_t8_p8 219 /* 0x0db */
+
+#define TRIE 55 /* 0x37 Match many EXACT(F[ALU]?)?
+ at once. flags==type */
+#define TRIE_tb_pb 220 /* 0x0dc */
+#define TRIE_tb_p8 221 /* 0x0dd */
+#define TRIE_t8_pb 222 /* 0x0de */
+#define TRIE_t8_p8 223 /* 0x0df */
+
+#define TRIEC 56 /* 0x38 Same as TRIE, but with
+ embedded charclass data */
+#define TRIEC_tb_pb 224 /* 0x0e0 */
+#define TRIEC_tb_p8 225 /* 0x0e1 */
+#define TRIEC_t8_pb 226 /* 0x0e2 */
+#define TRIEC_t8_p8 227 /* 0x0e3 */
+
+#define AHOCORASICK 57 /* 0x39 Aho Corasick stclass.
+ flags==type */
+#define AHOCORASICK_tb_pb 228 /* 0x0e4 */
+#define AHOCORASICK_tb_p8 229 /* 0x0e5 */
+#define AHOCORASICK_t8_pb 230 /* 0x0e6 */
+#define AHOCORASICK_t8_p8 231 /* 0x0e7 */
+
+#define AHOCORASICKC 58 /* 0x3a Same as AHOCORASICK, but
+ with embedded charclass data */
+#define AHOCORASICKC_tb_pb 232 /* 0x0e8 */
+#define AHOCORASICKC_tb_p8 233 /* 0x0e9 */
+#define AHOCORASICKC_t8_pb 234 /* 0x0ea */
+#define AHOCORASICKC_t8_p8 235 /* 0x0eb */
+
+#define NOTHING 59 /* 0x3b Match empty string. */
+#define NOTHING_tb_pb 236 /* 0x0ec */
+#define NOTHING_tb_p8 237 /* 0x0ed */
+#define NOTHING_t8_pb 238 /* 0x0ee */
+#define NOTHING_t8_p8 239 /* 0x0ef */
+
+#define TAIL 60 /* 0x3c Match empty string. Can
+ jump here from outside. */
+#define TAIL_tb_pb 240 /* 0x0f0 */
+#define TAIL_tb_p8 241 /* 0x0f1 */
+#define TAIL_t8_pb 242 /* 0x0f2 */
+#define TAIL_t8_p8 243 /* 0x0f3 */
+
+#define STAR 61 /* 0x3d Match this (simple) thing 0
+ or more times. */
+#define STAR_tb_pb 244 /* 0x0f4 */
+#define STAR_tb_p8 245 /* 0x0f5 */
+#define STAR_t8_pb 246 /* 0x0f6 */
+#define STAR_t8_p8 247 /* 0x0f7 */
+
+#define PLUS 62 /* 0x3e Match this (simple) thing 1
+ or more times. */
+#define PLUS_tb_pb 248 /* 0x0f8 */
+#define PLUS_tb_p8 249 /* 0x0f9 */
+#define PLUS_t8_pb 250 /* 0x0fa */
+#define PLUS_t8_p8 251 /* 0x0fb */
+
+#define CURLY 63 /* 0x3f Match this simple thing
+ {n,m} times. */
+#define CURLY_tb_pb 252 /* 0x0fc */
+#define CURLY_tb_p8 253 /* 0x0fd */
+#define CURLY_t8_pb 254 /* 0x0fe */
+#define CURLY_t8_p8 255 /* 0x0ff */
+
+#define CURLYN 64 /* 0x40 Capture next-after-this
+ simple thing */
+#define CURLYN_tb_pb 256 /* 0x100 */
+#define CURLYN_tb_p8 257 /* 0x101 */
+#define CURLYN_t8_pb 258 /* 0x102 */
+#define CURLYN_t8_p8 259 /* 0x103 */
+
+#define CURLYM 65 /* 0x41 Capture this medium-complex
+ thing {n,m} times. */
+#define CURLYM_tb_pb 260 /* 0x104 */
+#define CURLYM_tb_p8 261 /* 0x105 */
+#define CURLYM_t8_pb 262 /* 0x106 */
+#define CURLYM_t8_p8 263 /* 0x107 */
+
+#define CURLYX 66 /* 0x42 Match this complex thing
+ {n,m} times. */
+#define CURLYX_tb_pb 264 /* 0x108 */
+#define CURLYX_tb_p8 265 /* 0x109 */
+#define CURLYX_t8_pb 266 /* 0x10a */
+#define CURLYX_t8_p8 267 /* 0x10b */
+
+#define WHILEM 67 /* 0x43 Do curly processing and see
+ if rest matches. */
+#define WHILEM_tb_pb 268 /* 0x10c */
+#define WHILEM_tb_p8 269 /* 0x10d */
+#define WHILEM_t8_pb 270 /* 0x10e */
+#define WHILEM_t8_p8 271 /* 0x10f */
+
+#define OPEN 68 /* 0x44 Mark this point in input as
+ start of #n. */
+#define OPEN_tb_pb 272 /* 0x110 */
+#define OPEN_tb_p8 273 /* 0x111 */
+#define OPEN_t8_pb 274 /* 0x112 */
+#define OPEN_t8_p8 275 /* 0x113 */
+
+#define CLOSE 69 /* 0x45 Close corresponding OPEN of
+ #n. */
+#define CLOSE_tb_pb 276 /* 0x114 */
+#define CLOSE_tb_p8 277 /* 0x115 */
+#define CLOSE_t8_pb 278 /* 0x116 */
+#define CLOSE_t8_p8 279 /* 0x117 */
+
+#define SROPEN 70 /* 0x46 Same as OPEN, but for
+ script run */
+#define SROPEN_tb_pb 280 /* 0x118 */
+#define SROPEN_tb_p8 281 /* 0x119 */
+#define SROPEN_t8_pb 282 /* 0x11a */
+#define SROPEN_t8_p8 283 /* 0x11b */
+
+#define SRCLOSE 71 /* 0x47 Close preceding SROPEN */
+#define SRCLOSE_tb_pb 284 /* 0x11c */
+#define SRCLOSE_tb_p8 285 /* 0x11d */
+#define SRCLOSE_t8_pb 286 /* 0x11e */
+#define SRCLOSE_t8_p8 287 /* 0x11f */
+
+#define REF 72 /* 0x48 Match some already matched
+ string */
+#define REF_tb_pb 288 /* 0x120 */
+#define REF_tb_p8 289 /* 0x121 */
+#define REF_t8_pb 290 /* 0x122 */
+#define REF_t8_p8 291 /* 0x123 */
+
+#define REFF 73 /* 0x49 Match already matched
+ string, using /di rules. */
+#define REFF_tb_pb 292 /* 0x124 */
+#define REFF_tb_p8 293 /* 0x125 */
+#define REFF_t8_pb 294 /* 0x126 */
+#define REFF_t8_p8 295 /* 0x127 */
+
+#define REFFL 74 /* 0x4a Match already matched
+ string, using /li rules. */
+#define REFFL_tb_pb 296 /* 0x128 */
+#define REFFL_tb_p8 297 /* 0x129 */
+#define REFFL_t8_pb 298 /* 0x12a */
+#define REFFL_t8_p8 299 /* 0x12b */
+
+#define REFFU 75 /* 0x4b Match already matched
+ string, usng /ui. */
+#define REFFU_tb_pb 300 /* 0x12c */
+#define REFFU_tb_p8 301 /* 0x12d */
+#define REFFU_t8_pb 302 /* 0x12e */
+#define REFFU_t8_p8 303 /* 0x12f */
+
+#define REFFA 76 /* 0x4c Match already matched
+ string, using /aai rules. */
+#define REFFA_tb_pb 304 /* 0x130 */
+#define REFFA_tb_p8 305 /* 0x131 */
+#define REFFA_t8_pb 306 /* 0x132 */
+#define REFFA_t8_p8 307 /* 0x133 */
+
+#define REFN 77 /* 0x4d Match some already matched
+ string */
+#define REFN_tb_pb 308 /* 0x134 */
+#define REFN_tb_p8 309 /* 0x135 */
+#define REFN_t8_pb 310 /* 0x136 */
+#define REFN_t8_p8 311 /* 0x137 */
+
+#define REFFN 78 /* 0x4e Match already matched
+ string, using /di rules. */
+#define REFFN_tb_pb 312 /* 0x138 */
+#define REFFN_tb_p8 313 /* 0x139 */
+#define REFFN_t8_pb 314 /* 0x13a */
+#define REFFN_t8_p8 315 /* 0x13b */
+
+#define REFFLN 79 /* 0x4f Match already matched
+ string, using /li rules. */
+#define REFFLN_tb_pb 316 /* 0x13c */
+#define REFFLN_tb_p8 317 /* 0x13d */
+#define REFFLN_t8_pb 318 /* 0x13e */
+#define REFFLN_t8_p8 319 /* 0x13f */
+
+#define REFFUN 80 /* 0x50 Match already matched
+ string, using /ui rules. */
+#define REFFUN_tb_pb 320 /* 0x140 */
+#define REFFUN_tb_p8 321 /* 0x141 */
+#define REFFUN_t8_pb 322 /* 0x142 */
+#define REFFUN_t8_p8 323 /* 0x143 */
+
+#define REFFAN 81 /* 0x51 Match already matched
+ string, using /aai rules. */
+#define REFFAN_tb_pb 324 /* 0x144 */
+#define REFFAN_tb_p8 325 /* 0x145 */
+#define REFFAN_t8_pb 326 /* 0x146 */
+#define REFFAN_t8_p8 327 /* 0x147 */
+
+#define LONGJMP 82 /* 0x52 Jump far away. */
+#define LONGJMP_tb_pb 328 /* 0x148 */
+#define LONGJMP_tb_p8 329 /* 0x149 */
+#define LONGJMP_t8_pb 330 /* 0x14a */
+#define LONGJMP_t8_p8 331 /* 0x14b */
+
+#define BRANCHJ 83 /* 0x53 BRANCH with long offset. */
+#define BRANCHJ_tb_pb 332 /* 0x14c */
+#define BRANCHJ_tb_p8 333 /* 0x14d */
+#define BRANCHJ_t8_pb 334 /* 0x14e */
+#define BRANCHJ_t8_p8 335 /* 0x14f */
+
+#define IFMATCH 84 /* 0x54 Succeeds if the following
+ matches; non-zero flags "f",
+ next_off "o" means lookbehind
+ assertion starting "f..(f-o)"
+ characters before current */
+#define IFMATCH_tb_pb 336 /* 0x150 */
+#define IFMATCH_tb_p8 337 /* 0x151 */
+#define IFMATCH_t8_pb 338 /* 0x152 */
+#define IFMATCH_t8_p8 339 /* 0x153 */
+
+#define UNLESSM 85 /* 0x55 Fails if the following
+ matches; non-zero flags "f",
+ next_off "o" means lookbehind
+ assertion starting "f..(f-o)"
+ characters before current */
+#define UNLESSM_tb_pb 340 /* 0x154 */
+#define UNLESSM_tb_p8 341 /* 0x155 */
+#define UNLESSM_t8_pb 342 /* 0x156 */
+#define UNLESSM_t8_p8 343 /* 0x157 */
+
+#define SUSPEND 86 /* 0x56 "Independent" sub-RE. */
+#define SUSPEND_tb_pb 344 /* 0x158 */
+#define SUSPEND_tb_p8 345 /* 0x159 */
+#define SUSPEND_t8_pb 346 /* 0x15a */
+#define SUSPEND_t8_p8 347 /* 0x15b */
+
+#define IFTHEN 87 /* 0x57 Switch, should be preceded
+ by switcher. */
+#define IFTHEN_tb_pb 348 /* 0x15c */
+#define IFTHEN_tb_p8 349 /* 0x15d */
+#define IFTHEN_t8_pb 350 /* 0x15e */
+#define IFTHEN_t8_p8 351 /* 0x15f */
+
+#define GROUPP 88 /* 0x58 Whether the group matched.
+ */
+#define GROUPP_tb_pb 352 /* 0x160 */
+#define GROUPP_tb_p8 353 /* 0x161 */
+#define GROUPP_t8_pb 354 /* 0x162 */
+#define GROUPP_t8_p8 355 /* 0x163 */
+
+#define EVAL 89 /* 0x59 Execute some Perl code. */
+#define EVAL_tb_pb 356 /* 0x164 */
+#define EVAL_tb_p8 357 /* 0x165 */
+#define EVAL_t8_pb 358 /* 0x166 */
+#define EVAL_t8_p8 359 /* 0x167 */
+
+#define MINMOD 90 /* 0x5a Next operator is not
+ greedy. */
+#define MINMOD_tb_pb 360 /* 0x168 */
+#define MINMOD_tb_p8 361 /* 0x169 */
+#define MINMOD_t8_pb 362 /* 0x16a */
+#define MINMOD_t8_p8 363 /* 0x16b */
+
+#define LOGICAL 91 /* 0x5b Next opcode should set the
+ flag only. */
+#define LOGICAL_tb_pb 364 /* 0x16c */
+#define LOGICAL_tb_p8 365 /* 0x16d */
+#define LOGICAL_t8_pb 366 /* 0x16e */
+#define LOGICAL_t8_p8 367 /* 0x16f */
+
+#define RENUM 92 /* 0x5c Group with independently
+ numbered parens. */
+#define RENUM_tb_pb 368 /* 0x170 */
+#define RENUM_tb_p8 369 /* 0x171 */
+#define RENUM_t8_pb 370 /* 0x172 */
+#define RENUM_t8_p8 371 /* 0x173 */
+
+#define GOSUB 93 /* 0x5d recurse to paren arg1 at
+ (signed) ofs arg2 */
+#define GOSUB_tb_pb 372 /* 0x174 */
+#define GOSUB_tb_p8 373 /* 0x175 */
+#define GOSUB_t8_pb 374 /* 0x176 */
+#define GOSUB_t8_p8 375 /* 0x177 */
+
+#define GROUPPN 94 /* 0x5e Whether the group matched.
+ */
+#define GROUPPN_tb_pb 376 /* 0x178 */
+#define GROUPPN_tb_p8 377 /* 0x179 */
+#define GROUPPN_t8_pb 378 /* 0x17a */
+#define GROUPPN_t8_p8 379 /* 0x17b */
+
+#define INSUBP 95 /* 0x5f Whether we are in a
+ specific recurse. */
+#define INSUBP_tb_pb 380 /* 0x17c */
+#define INSUBP_tb_p8 381 /* 0x17d */
+#define INSUBP_t8_pb 382 /* 0x17e */
+#define INSUBP_t8_p8 383 /* 0x17f */
+
+#define DEFINEP 96 /* 0x60 Never execute directly. */
+#define DEFINEP_tb_pb 384 /* 0x180 */
+#define DEFINEP_tb_p8 385 /* 0x181 */
+#define DEFINEP_t8_pb 386 /* 0x182 */
+#define DEFINEP_t8_p8 387 /* 0x183 */
+
+#define ENDLIKE 97 /* 0x61 Used only for the type
+ field of verbs */
+#define ENDLIKE_tb_pb 388 /* 0x184 */
+#define ENDLIKE_tb_p8 389 /* 0x185 */
+#define ENDLIKE_t8_pb 390 /* 0x186 */
+#define ENDLIKE_t8_p8 391 /* 0x187 */
+
+#define OPFAIL 98 /* 0x62 Same as (?!), but with verb
+ arg */
+#define OPFAIL_tb_pb 392 /* 0x188 */
+#define OPFAIL_tb_p8 393 /* 0x189 */
+#define OPFAIL_t8_pb 394 /* 0x18a */
+#define OPFAIL_t8_p8 395 /* 0x18b */
+
+#define ACCEPT 99 /* 0x63 Accepts the current matched
+ string, with verbar */
+#define ACCEPT_tb_pb 396 /* 0x18c */
+#define ACCEPT_tb_p8 397 /* 0x18d */
+#define ACCEPT_t8_pb 398 /* 0x18e */
+#define ACCEPT_t8_p8 399 /* 0x18f */
+
+#define VERB 100 /* 0x64 Used only for the type
+ field of verbs */
+#define VERB_tb_pb 400 /* 0x190 */
+#define VERB_tb_p8 401 /* 0x191 */
+#define VERB_t8_pb 402 /* 0x192 */
+#define VERB_t8_p8 403 /* 0x193 */
+
+#define PRUNE 101 /* 0x65 Pattern fails at this
+ startpoint if no-backtracking
+ through this */
+#define PRUNE_tb_pb 404 /* 0x194 */
+#define PRUNE_tb_p8 405 /* 0x195 */
+#define PRUNE_t8_pb 406 /* 0x196 */
+#define PRUNE_t8_p8 407 /* 0x197 */
+
+#define MARKPOINT 102 /* 0x66 Push the current location
+ for rollback by cut. */
+#define MARKPOINT_tb_pb 408 /* 0x198 */
+#define MARKPOINT_tb_p8 409 /* 0x199 */
+#define MARKPOINT_t8_pb 410 /* 0x19a */
+#define MARKPOINT_t8_p8 411 /* 0x19b */
+
+#define SKIP 103 /* 0x67 On failure skip forward (to
+ the mark) before retrying */
+#define SKIP_tb_pb 412 /* 0x19c */
+#define SKIP_tb_p8 413 /* 0x19d */
+#define SKIP_t8_pb 414 /* 0x19e */
+#define SKIP_t8_p8 415 /* 0x19f */
+
+#define COMMIT 104 /* 0x68 Pattern fails outright if
+ backtracking through this */
+#define COMMIT_tb_pb 416 /* 0x1a0 */
+#define COMMIT_tb_p8 417 /* 0x1a1 */
+#define COMMIT_t8_pb 418 /* 0x1a2 */
+#define COMMIT_t8_p8 419 /* 0x1a3 */
+
+#define CUTGROUP 105 /* 0x69 On failure go to the next
+ alternation in the group */
+#define CUTGROUP_tb_pb 420 /* 0x1a4 */
+#define CUTGROUP_tb_p8 421 /* 0x1a5 */
+#define CUTGROUP_t8_pb 422 /* 0x1a6 */
+#define CUTGROUP_t8_p8 423 /* 0x1a7 */
+
+#define KEEPS 106 /* 0x6a $& begins here. */
+#define KEEPS_tb_pb 424 /* 0x1a8 */
+#define KEEPS_tb_p8 425 /* 0x1a9 */
+#define KEEPS_t8_pb 426 /* 0x1aa */
+#define KEEPS_t8_p8 427 /* 0x1ab */
+
+#define OPTIMIZED 107 /* 0x6b Placeholder for dump. */
+#define OPTIMIZED_tb_pb 428 /* 0x1ac */
+#define OPTIMIZED_tb_p8 429 /* 0x1ad */
+#define OPTIMIZED_t8_pb 430 /* 0x1ae */
+#define OPTIMIZED_t8_p8 431 /* 0x1af */
+
+#define PSEUDO 108 /* 0x6c Pseudo opcode for internal
+ use. */
+#define PSEUDO_tb_pb 432 /* 0x1b0 */
+#define PSEUDO_tb_p8 433 /* 0x1b1 */
+#define PSEUDO_t8_pb 434 /* 0x1b2 */
+#define PSEUDO_t8_p8 435 /* 0x1b3 */
+
+#define REGEX_SET 109 /* 0x6d Regex set, temporary node
+ used in pre-optimization
+ compilation */
+#define REGEX_SET_tb_pb 436 /* 0x1b4 */
+#define REGEX_SET_tb_p8 437 /* 0x1b5 */
+#define REGEX_SET_t8_pb 438 /* 0x1b6 */
+#define REGEX_SET_t8_p8 439 /* 0x1b7 */
+
/* ------------ States ------------- */
-#define TRIE_next (REGNODE_MAX + 1) /* state for TRIE */
-#define TRIE_next_fail (REGNODE_MAX + 2) /* state for TRIE */
-#define EVAL_B (REGNODE_MAX + 3) /* state for EVAL */
-#define EVAL_B_fail (REGNODE_MAX + 4) /* state for EVAL */
-#define EVAL_postponed_AB (REGNODE_MAX + 5) /* state for EVAL */
-#define EVAL_postponed_AB_fail (REGNODE_MAX + 6) /* state for EVAL */
-#define CURLYX_end (REGNODE_MAX + 7) /* state for CURLYX */
-#define CURLYX_end_fail (REGNODE_MAX + 8) /* state for CURLYX */
-#define WHILEM_A_pre (REGNODE_MAX + 9) /* state for WHILEM */
-#define WHILEM_A_pre_fail (REGNODE_MAX + 10) /* state for WHILEM */
-#define WHILEM_A_min (REGNODE_MAX + 11) /* state for WHILEM */
-#define WHILEM_A_min_fail (REGNODE_MAX + 12) /* state for WHILEM */
-#define WHILEM_A_max (REGNODE_MAX + 13) /* state for WHILEM */
-#define WHILEM_A_max_fail (REGNODE_MAX + 14) /* state for WHILEM */
-#define WHILEM_B_min (REGNODE_MAX + 15) /* state for WHILEM */
-#define WHILEM_B_min_fail (REGNODE_MAX + 16) /* state for WHILEM */
-#define WHILEM_B_max (REGNODE_MAX + 17) /* state for WHILEM */
-#define WHILEM_B_max_fail (REGNODE_MAX + 18) /* state for WHILEM */
-#define BRANCH_next (REGNODE_MAX + 19) /* state for BRANCH */
-#define BRANCH_next_fail (REGNODE_MAX + 20) /* state for BRANCH */
-#define CURLYM_A (REGNODE_MAX + 21) /* state for CURLYM */
-#define CURLYM_A_fail (REGNODE_MAX + 22) /* state for CURLYM */
-#define CURLYM_B (REGNODE_MAX + 23) /* state for CURLYM */
-#define CURLYM_B_fail (REGNODE_MAX + 24) /* state for CURLYM */
-#define IFMATCH_A (REGNODE_MAX + 25) /* state for IFMATCH */
-#define IFMATCH_A_fail (REGNODE_MAX + 26) /* state for IFMATCH */
-#define CURLY_B_min (REGNODE_MAX + 27) /* state for CURLY */
-#define CURLY_B_min_fail (REGNODE_MAX + 28) /* state for CURLY */
-#define CURLY_B_max (REGNODE_MAX + 29) /* state for CURLY */
-#define CURLY_B_max_fail (REGNODE_MAX + 30) /* state for CURLY */
-#define COMMIT_next (REGNODE_MAX + 31) /* state for COMMIT */
-#define COMMIT_next_fail (REGNODE_MAX + 32) /* state for COMMIT */
-#define MARKPOINT_next (REGNODE_MAX + 33) /* state for MARKPOINT */
-#define MARKPOINT_next_fail (REGNODE_MAX + 34) /* state for MARKPOINT */
-#define SKIP_next (REGNODE_MAX + 35) /* state for SKIP */
-#define SKIP_next_fail (REGNODE_MAX + 36) /* state for SKIP */
-#define CUTGROUP_next (REGNODE_MAX + 37) /* state for CUTGROUP */
-#define CUTGROUP_next_fail (REGNODE_MAX + 38) /* state for CUTGROUP */
-#define KEEPS_next (REGNODE_MAX + 39) /* state for KEEPS */
-#define KEEPS_next_fail (REGNODE_MAX + 40) /* state for KEEPS */
+#define TRIE_next 110 /* 0x6e state for TRIE */
+#define TRIE_next_tb_pb 440 /* 0x1b8 */
+#define TRIE_next_tb_p8 441 /* 0x1b9 */
+#define TRIE_next_t8_pb 442 /* 0x1ba */
+#define TRIE_next_t8_p8 443 /* 0x1bb */
+
+#define TRIE_next_fail 111 /* 0x6f state for TRIE */
+#define TRIE_next_fail_tb_pb 444 /* 0x1bc */
+#define TRIE_next_fail_tb_p8 445 /* 0x1bd */
+#define TRIE_next_fail_t8_pb 446 /* 0x1be */
+#define TRIE_next_fail_t8_p8 447 /* 0x1bf */
+
+#define EVAL_B 112 /* 0x70 state for EVAL */
+#define EVAL_B_tb_pb 448 /* 0x1c0 */
+#define EVAL_B_tb_p8 449 /* 0x1c1 */
+#define EVAL_B_t8_pb 450 /* 0x1c2 */
+#define EVAL_B_t8_p8 451 /* 0x1c3 */
+
+#define EVAL_B_fail 113 /* 0x71 state for EVAL */
+#define EVAL_B_fail_tb_pb 452 /* 0x1c4 */
+#define EVAL_B_fail_tb_p8 453 /* 0x1c5 */
+#define EVAL_B_fail_t8_pb 454 /* 0x1c6 */
+#define EVAL_B_fail_t8_p8 455 /* 0x1c7 */
+
+#define EVAL_postponed_AB 114 /* 0x72 state for EVAL */
+#define EVAL_postponed_AB_tb_pb 456 /* 0x1c8 */
+#define EVAL_postponed_AB_tb_p8 457 /* 0x1c9 */
+#define EVAL_postponed_AB_t8_pb 458 /* 0x1ca */
+#define EVAL_postponed_AB_t8_p8 459 /* 0x1cb */
+
+#define EVAL_postponed_AB_fail 115 /* 0x73 state for EVAL */
+#define EVAL_postponed_AB_fail_tb_pb 460 /* 0x1cc */
+#define EVAL_postponed_AB_fail_tb_p8 461 /* 0x1cd */
+#define EVAL_postponed_AB_fail_t8_pb 462 /* 0x1ce */
+#define EVAL_postponed_AB_fail_t8_p8 463 /* 0x1cf */
+
+#define CURLYX_end 116 /* 0x74 state for CURLYX */
+#define CURLYX_end_tb_pb 464 /* 0x1d0 */
+#define CURLYX_end_tb_p8 465 /* 0x1d1 */
+#define CURLYX_end_t8_pb 466 /* 0x1d2 */
+#define CURLYX_end_t8_p8 467 /* 0x1d3 */
+
+#define CURLYX_end_fail 117 /* 0x75 state for CURLYX */
+#define CURLYX_end_fail_tb_pb 468 /* 0x1d4 */
+#define CURLYX_end_fail_tb_p8 469 /* 0x1d5 */
+#define CURLYX_end_fail_t8_pb 470 /* 0x1d6 */
+#define CURLYX_end_fail_t8_p8 471 /* 0x1d7 */
+
+#define WHILEM_A_pre 118 /* 0x76 state for WHILEM */
+#define WHILEM_A_pre_tb_pb 472 /* 0x1d8 */
+#define WHILEM_A_pre_tb_p8 473 /* 0x1d9 */
+#define WHILEM_A_pre_t8_pb 474 /* 0x1da */
+#define WHILEM_A_pre_t8_p8 475 /* 0x1db */
+
+#define WHILEM_A_pre_fail 119 /* 0x77 state for WHILEM */
+#define WHILEM_A_pre_fail_tb_pb 476 /* 0x1dc */
+#define WHILEM_A_pre_fail_tb_p8 477 /* 0x1dd */
+#define WHILEM_A_pre_fail_t8_pb 478 /* 0x1de */
+#define WHILEM_A_pre_fail_t8_p8 479 /* 0x1df */
+
+#define WHILEM_A_min 120 /* 0x78 state for WHILEM */
+#define WHILEM_A_min_tb_pb 480 /* 0x1e0 */
+#define WHILEM_A_min_tb_p8 481 /* 0x1e1 */
+#define WHILEM_A_min_t8_pb 482 /* 0x1e2 */
+#define WHILEM_A_min_t8_p8 483 /* 0x1e3 */
+
+#define WHILEM_A_min_fail 121 /* 0x79 state for WHILEM */
+#define WHILEM_A_min_fail_tb_pb 484 /* 0x1e4 */
+#define WHILEM_A_min_fail_tb_p8 485 /* 0x1e5 */
+#define WHILEM_A_min_fail_t8_pb 486 /* 0x1e6 */
+#define WHILEM_A_min_fail_t8_p8 487 /* 0x1e7 */
+
+#define WHILEM_A_max 122 /* 0x7a state for WHILEM */
+#define WHILEM_A_max_tb_pb 488 /* 0x1e8 */
+#define WHILEM_A_max_tb_p8 489 /* 0x1e9 */
+#define WHILEM_A_max_t8_pb 490 /* 0x1ea */
+#define WHILEM_A_max_t8_p8 491 /* 0x1eb */
+
+#define WHILEM_A_max_fail 123 /* 0x7b state for WHILEM */
+#define WHILEM_A_max_fail_tb_pb 492 /* 0x1ec */
+#define WHILEM_A_max_fail_tb_p8 493 /* 0x1ed */
+#define WHILEM_A_max_fail_t8_pb 494 /* 0x1ee */
+#define WHILEM_A_max_fail_t8_p8 495 /* 0x1ef */
+
+#define WHILEM_B_min 124 /* 0x7c state for WHILEM */
+#define WHILEM_B_min_tb_pb 496 /* 0x1f0 */
+#define WHILEM_B_min_tb_p8 497 /* 0x1f1 */
+#define WHILEM_B_min_t8_pb 498 /* 0x1f2 */
+#define WHILEM_B_min_t8_p8 499 /* 0x1f3 */
+
+#define WHILEM_B_min_fail 125 /* 0x7d state for WHILEM */
+#define WHILEM_B_min_fail_tb_pb 500 /* 0x1f4 */
+#define WHILEM_B_min_fail_tb_p8 501 /* 0x1f5 */
+#define WHILEM_B_min_fail_t8_pb 502 /* 0x1f6 */
+#define WHILEM_B_min_fail_t8_p8 503 /* 0x1f7 */
+
+#define WHILEM_B_max 126 /* 0x7e state for WHILEM */
+#define WHILEM_B_max_tb_pb 504 /* 0x1f8 */
+#define WHILEM_B_max_tb_p8 505 /* 0x1f9 */
+#define WHILEM_B_max_t8_pb 506 /* 0x1fa */
+#define WHILEM_B_max_t8_p8 507 /* 0x1fb */
+
+#define WHILEM_B_max_fail 127 /* 0x7f state for WHILEM */
+#define WHILEM_B_max_fail_tb_pb 508 /* 0x1fc */
+#define WHILEM_B_max_fail_tb_p8 509 /* 0x1fd */
+#define WHILEM_B_max_fail_t8_pb 510 /* 0x1fe */
+#define WHILEM_B_max_fail_t8_p8 511 /* 0x1ff */
+
+#define BRANCH_next 128 /* 0x80 state for BRANCH */
+#define BRANCH_next_tb_pb 512 /* 0x200 */
+#define BRANCH_next_tb_p8 513 /* 0x201 */
+#define BRANCH_next_t8_pb 514 /* 0x202 */
+#define BRANCH_next_t8_p8 515 /* 0x203 */
+
+#define BRANCH_next_fail 129 /* 0x81 state for BRANCH */
+#define BRANCH_next_fail_tb_pb 516 /* 0x204 */
+#define BRANCH_next_fail_tb_p8 517 /* 0x205 */
+#define BRANCH_next_fail_t8_pb 518 /* 0x206 */
+#define BRANCH_next_fail_t8_p8 519 /* 0x207 */
+
+#define CURLYM_A 130 /* 0x82 state for CURLYM */
+#define CURLYM_A_tb_pb 520 /* 0x208 */
+#define CURLYM_A_tb_p8 521 /* 0x209 */
+#define CURLYM_A_t8_pb 522 /* 0x20a */
+#define CURLYM_A_t8_p8 523 /* 0x20b */
+
+#define CURLYM_A_fail 131 /* 0x83 state for CURLYM */
+#define CURLYM_A_fail_tb_pb 524 /* 0x20c */
+#define CURLYM_A_fail_tb_p8 525 /* 0x20d */
+#define CURLYM_A_fail_t8_pb 526 /* 0x20e */
+#define CURLYM_A_fail_t8_p8 527 /* 0x20f */
+
+#define CURLYM_B 132 /* 0x84 state for CURLYM */
+#define CURLYM_B_tb_pb 528 /* 0x210 */
+#define CURLYM_B_tb_p8 529 /* 0x211 */
+#define CURLYM_B_t8_pb 530 /* 0x212 */
+#define CURLYM_B_t8_p8 531 /* 0x213 */
+
+#define CURLYM_B_fail 133 /* 0x85 state for CURLYM */
+#define CURLYM_B_fail_tb_pb 532 /* 0x214 */
+#define CURLYM_B_fail_tb_p8 533 /* 0x215 */
+#define CURLYM_B_fail_t8_pb 534 /* 0x216 */
+#define CURLYM_B_fail_t8_p8 535 /* 0x217 */
+
+#define IFMATCH_A 134 /* 0x86 state for IFMATCH */
+#define IFMATCH_A_tb_pb 536 /* 0x218 */
+#define IFMATCH_A_tb_p8 537 /* 0x219 */
+#define IFMATCH_A_t8_pb 538 /* 0x21a */
+#define IFMATCH_A_t8_p8 539 /* 0x21b */
+
+#define IFMATCH_A_fail 135 /* 0x87 state for IFMATCH */
+#define IFMATCH_A_fail_tb_pb 540 /* 0x21c */
+#define IFMATCH_A_fail_tb_p8 541 /* 0x21d */
+#define IFMATCH_A_fail_t8_pb 542 /* 0x21e */
+#define IFMATCH_A_fail_t8_p8 543 /* 0x21f */
+
+#define CURLY_B_min 136 /* 0x88 state for CURLY */
+#define CURLY_B_min_tb_pb 544 /* 0x220 */
+#define CURLY_B_min_tb_p8 545 /* 0x221 */
+#define CURLY_B_min_t8_pb 546 /* 0x222 */
+#define CURLY_B_min_t8_p8 547 /* 0x223 */
+
+#define CURLY_B_min_fail 137 /* 0x89 state for CURLY */
+#define CURLY_B_min_fail_tb_pb 548 /* 0x224 */
+#define CURLY_B_min_fail_tb_p8 549 /* 0x225 */
+#define CURLY_B_min_fail_t8_pb 550 /* 0x226 */
+#define CURLY_B_min_fail_t8_p8 551 /* 0x227 */
+
+#define CURLY_B_max 138 /* 0x8a state for CURLY */
+#define CURLY_B_max_tb_pb 552 /* 0x228 */
+#define CURLY_B_max_tb_p8 553 /* 0x229 */
+#define CURLY_B_max_t8_pb 554 /* 0x22a */
+#define CURLY_B_max_t8_p8 555 /* 0x22b */
+
+#define CURLY_B_max_fail 139 /* 0x8b state for CURLY */
+#define CURLY_B_max_fail_tb_pb 556 /* 0x22c */
+#define CURLY_B_max_fail_tb_p8 557 /* 0x22d */
+#define CURLY_B_max_fail_t8_pb 558 /* 0x22e */
+#define CURLY_B_max_fail_t8_p8 559 /* 0x22f */
+
+#define COMMIT_next 140 /* 0x8c state for COMMIT */
+#define COMMIT_next_tb_pb 560 /* 0x230 */
+#define COMMIT_next_tb_p8 561 /* 0x231 */
+#define COMMIT_next_t8_pb 562 /* 0x232 */
+#define COMMIT_next_t8_p8 563 /* 0x233 */
+
+#define COMMIT_next_fail 141 /* 0x8d state for COMMIT */
+#define COMMIT_next_fail_tb_pb 564 /* 0x234 */
+#define COMMIT_next_fail_tb_p8 565 /* 0x235 */
+#define COMMIT_next_fail_t8_pb 566 /* 0x236 */
+#define COMMIT_next_fail_t8_p8 567 /* 0x237 */
+
+#define MARKPOINT_next 142 /* 0x8e state for MARKPOINT */
+#define MARKPOINT_next_tb_pb 568 /* 0x238 */
+#define MARKPOINT_next_tb_p8 569 /* 0x239 */
+#define MARKPOINT_next_t8_pb 570 /* 0x23a */
+#define MARKPOINT_next_t8_p8 571 /* 0x23b */
+
+#define MARKPOINT_next_fail 143 /* 0x8f state for MARKPOINT */
+#define MARKPOINT_next_fail_tb_pb 572 /* 0x23c */
+#define MARKPOINT_next_fail_tb_p8 573 /* 0x23d */
+#define MARKPOINT_next_fail_t8_pb 574 /* 0x23e */
+#define MARKPOINT_next_fail_t8_p8 575 /* 0x23f */
+
+#define SKIP_next 144 /* 0x90 state for SKIP */
+#define SKIP_next_tb_pb 576 /* 0x240 */
+#define SKIP_next_tb_p8 577 /* 0x241 */
+#define SKIP_next_t8_pb 578 /* 0x242 */
+#define SKIP_next_t8_p8 579 /* 0x243 */
+
+#define SKIP_next_fail 145 /* 0x91 state for SKIP */
+#define SKIP_next_fail_tb_pb 580 /* 0x244 */
+#define SKIP_next_fail_tb_p8 581 /* 0x245 */
+#define SKIP_next_fail_t8_pb 582 /* 0x246 */
+#define SKIP_next_fail_t8_p8 583 /* 0x247 */
+
+#define CUTGROUP_next 146 /* 0x92 state for CUTGROUP */
+#define CUTGROUP_next_tb_pb 584 /* 0x248 */
+#define CUTGROUP_next_tb_p8 585 /* 0x249 */
+#define CUTGROUP_next_t8_pb 586 /* 0x24a */
+#define CUTGROUP_next_t8_p8 587 /* 0x24b */
+
+#define CUTGROUP_next_fail 147 /* 0x93 state for CUTGROUP */
+#define CUTGROUP_next_fail_tb_pb 588 /* 0x24c */
+#define CUTGROUP_next_fail_tb_p8 589 /* 0x24d */
+#define CUTGROUP_next_fail_t8_pb 590 /* 0x24e */
+#define CUTGROUP_next_fail_t8_p8 591 /* 0x24f */
+
+#define KEEPS_next 148 /* 0x94 state for KEEPS */
+#define KEEPS_next_tb_pb 592 /* 0x250 */
+#define KEEPS_next_tb_p8 593 /* 0x251 */
+#define KEEPS_next_t8_pb 594 /* 0x252 */
+#define KEEPS_next_t8_p8 595 /* 0x253 */
+
+#define KEEPS_next_fail 149 /* 0x95 state for KEEPS */
+#define KEEPS_next_fail_tb_pb 596 /* 0x254 */
+#define KEEPS_next_fail_tb_p8 597 /* 0x255 */
+#define KEEPS_next_fail_t8_pb 598 /* 0x256 */
+#define KEEPS_next_fail_t8_p8 599 /* 0x257 */
+
/* PL_regkind[] What type of regop or state is this. */