X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/a56633d124943ba26d859e646540b2c7ca8fa4c9..HEAD:/regnodes.h diff --git a/regnodes.h b/regnodes.h index 9fd01a7..17a8422 100644 --- a/regnodes.h +++ b/regnodes.h @@ -1,549 +1,1601 @@ -/* -*- buffer-read-only: t -*- +/* -*- mode: C; buffer-read-only: t -*- !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by regen/regcomp.pl from regcomp.sym. + This file is built by regen/regcomp.pl from regcomp.sym, op_reg_common.h + and regexp.h. Any changes made here will be lost! */ +#if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) + + +/* typedefs for regex nodes - one typedef per node type */ + +typedef struct regnode_2 tregnode_ACCEPT; +typedef struct regnode_1 tregnode_AHOCORASICK; +typedef struct regnode_charclass tregnode_AHOCORASICKC; +typedef struct regnode_charclass tregnode_ANYOF; +typedef struct regnode_charclass tregnode_ANYOFD; +typedef struct regnode_1 tregnode_ANYOFH; +typedef struct regnode_1 tregnode_ANYOFHb; +typedef struct regnode_bbm tregnode_ANYOFHbbm; +typedef struct regnode_1 tregnode_ANYOFHr; +typedef struct regnode_1 tregnode_ANYOFHs; +typedef struct regnode_charclass tregnode_ANYOFL; +typedef struct regnode_1 tregnode_ANYOFM; +typedef struct regnode_charclass_posixl tregnode_ANYOFPOSIXL; +typedef struct regnode_1 tregnode_ANYOFR; +typedef struct regnode_1 tregnode_ANYOFRb; +typedef struct regnode tregnode_BOUND; +typedef struct regnode tregnode_BOUNDA; +typedef struct regnode tregnode_BOUNDL; +typedef struct regnode tregnode_BOUNDU; +typedef struct regnode_1 tregnode_BRANCH; +typedef struct regnode_2 tregnode_BRANCHJ; +typedef struct regnode_1 tregnode_CLOSE; +typedef struct regnode tregnode_CLUMP; +typedef struct regnode_1 tregnode_COMMIT; +typedef struct regnode_3 tregnode_CURLY; +typedef struct regnode_3 tregnode_CURLYM; +typedef struct regnode_3 tregnode_CURLYN; +typedef struct regnode_3 tregnode_CURLYX; +typedef struct regnode_1 tregnode_CUTGROUP; +typedef struct regnode_1 tregnode_DEFINEP; +typedef struct regnode tregnode_END; +typedef struct regnode tregnode_ENDLIKE; +typedef struct regnode tregnode_EOS; +typedef struct regnode_2 tregnode_EVAL; +typedef struct regnode tregnode_EXACT; +typedef struct regnode tregnode_EXACTF; +typedef struct regnode tregnode_EXACTFAA; +typedef struct regnode tregnode_EXACTFAA_NO_TRIE; +typedef struct regnode tregnode_EXACTFL; +typedef struct regnode tregnode_EXACTFLU8; +typedef struct regnode tregnode_EXACTFU; +typedef struct regnode tregnode_EXACTFUP; +typedef struct regnode tregnode_EXACTFU_REQ8; +typedef struct regnode tregnode_EXACTFU_S_EDGE; +typedef struct regnode tregnode_EXACTL; +typedef struct regnode tregnode_EXACT_REQ8; +typedef struct regnode_2 tregnode_GOSUB; +typedef struct regnode tregnode_GPOS; +typedef struct regnode_1 tregnode_GROUPP; +typedef struct regnode_1 tregnode_GROUPPN; +typedef struct regnode_1 tregnode_IFMATCH; +typedef struct regnode_1 tregnode_IFTHEN; +typedef struct regnode_1 tregnode_INSUBP; +typedef struct regnode tregnode_KEEPS; +typedef struct regnode_1 tregnode_LEXACT; +typedef struct regnode_1 tregnode_LEXACT_REQ8; +typedef struct regnode tregnode_LNBREAK; +typedef struct regnode tregnode_LOGICAL; +typedef struct regnode_1 tregnode_LONGJMP; +typedef struct regnode tregnode_LOOKBEHIND_END; +typedef struct regnode_1 tregnode_MARKPOINT; +typedef struct regnode tregnode_MBOL; +typedef struct regnode tregnode_MEOL; +typedef struct regnode tregnode_MINMOD; +typedef struct regnode_1 tregnode_NANYOFM; +typedef struct regnode tregnode_NBOUND; +typedef struct regnode tregnode_NBOUNDA; +typedef struct regnode tregnode_NBOUNDL; +typedef struct regnode tregnode_NBOUNDU; +typedef struct regnode tregnode_NOTHING; +typedef struct regnode tregnode_NPOSIXA; +typedef struct regnode tregnode_NPOSIXD; +typedef struct regnode tregnode_NPOSIXL; +typedef struct regnode tregnode_NPOSIXU; +typedef struct regnode_1 tregnode_OPEN; +typedef struct regnode_1 tregnode_OPFAIL; +typedef struct regnode tregnode_OPTIMIZED; +typedef struct regnode tregnode_PLUS; +typedef struct regnode tregnode_POSIXA; +typedef struct regnode tregnode_POSIXD; +typedef struct regnode tregnode_POSIXL; +typedef struct regnode tregnode_POSIXU; +typedef struct regnode_1 tregnode_PRUNE; +typedef struct regnode tregnode_PSEUDO; +typedef struct regnode_2 tregnode_REF; +typedef struct regnode_2 tregnode_REFF; +typedef struct regnode_2 tregnode_REFFA; +typedef struct regnode_2 tregnode_REFFAN; +typedef struct regnode_2 tregnode_REFFL; +typedef struct regnode_2 tregnode_REFFLN; +typedef struct regnode_2 tregnode_REFFN; +typedef struct regnode_2 tregnode_REFFU; +typedef struct regnode_2 tregnode_REFFUN; +typedef struct regnode_2 tregnode_REFN; +typedef struct regnode_p tregnode_REGEX_SET; +typedef struct regnode tregnode_REG_ANY; +typedef struct regnode_1 tregnode_RENUM; +typedef struct regnode tregnode_SANY; +typedef struct regnode tregnode_SBOL; +typedef struct regnode tregnode_SEOL; +typedef struct regnode_1 tregnode_SKIP; +typedef struct regnode tregnode_SRCLOSE; +typedef struct regnode tregnode_SROPEN; +typedef struct regnode tregnode_STAR; +typedef struct regnode tregnode_SUCCEED; +typedef struct regnode_1 tregnode_SUSPEND; +typedef struct regnode tregnode_TAIL; +typedef struct regnode_1 tregnode_TRIE; +typedef struct regnode_charclass tregnode_TRIEC; +typedef struct regnode_1 tregnode_UNLESSM; +typedef struct regnode_1 tregnode_VERB; +typedef struct regnode tregnode_WHILEM; + +/* end typedefs */ + /* Regops and State definitions */ -#define REGNODE_MAX 104 -#define REGMATCH_STATE_MAX 144 - -#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 match "" between any Unicode \w\W or \W\w */ -#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 Unicode 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 match "" between any Unicode \w\w or \W\W */ -#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 Unicode 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 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 string using /id rules (w/len); (string not UTF-8, not guaranteed to be folded). */ -#define EXACTFL 39 /* 0x27 Match this string using /il rules (w/len); (string not guaranteed to be folded). */ -#define EXACTFU 40 /* 0x28 Match this string using /iu rules (w/len); (string folded iff in UTF-8; non-UTF8 folded length <= unfolded). */ -#define EXACTFAA 41 /* 0x29 Match this string using /iaa rules (w/len) (string folded iff in UTF-8; non-UTF8 folded length <= unfolded). */ -#define EXACTFU_SS 42 /* 0x2a Match this string using /iu rules (w/len); (string not UTF-8, only portions guaranteed to be folded; folded length > unfolded). */ -#define EXACTFLU8 43 /* 0x2b Like EXACTFU, but use /il, UTF-8, folded, and everything in it is above 255. */ -#define EXACTFAA_NO_TRIE 44 /* 0x2c Match this string using /iaa rules (w/len) (string not UTF-8, not guaranteed to be folded, not currently trie-able). */ -#define EXACT_ONLY8 45 /* 0x2d Like EXACT, but only UTF-8 encoded targets can match */ -#define EXACTFU_ONLY8 46 /* 0x2e Like EXACTFU, but only UTF-8 encoded targets can match */ -#define EXACTFS_B_U 47 /* 0x2f EXACTFU but begins with [Ss]; (string not UTF-8; compile-time only). */ -#define EXACTFS_E_U 48 /* 0x30 EXACTFU but ends with [Ss]; (string not UTF-8; compile-time only). */ -#define EXACTFS_BE_U 49 /* 0x31 EXACTFU but begins and ends with [Ss]; (string not UTF-8; compile-time only). */ -#define NOTHING 50 /* 0x32 Match empty string. */ -#define TAIL 51 /* 0x33 Match empty string. Can jump here from outside. */ -#define STAR 52 /* 0x34 Match this (simple) thing 0 or more times. */ -#define PLUS 53 /* 0x35 Match this (simple) thing 1 or more times. */ -#define CURLY 54 /* 0x36 Match this simple thing {n,m} times. */ -#define CURLYN 55 /* 0x37 Capture next-after-this simple thing */ -#define CURLYM 56 /* 0x38 Capture this medium-complex thing {n,m} times. */ -#define CURLYX 57 /* 0x39 Match this complex thing {n,m} times. */ -#define WHILEM 58 /* 0x3a Do curly processing and see if rest matches. */ -#define OPEN 59 /* 0x3b Mark this point in input as start of #n. */ -#define CLOSE 60 /* 0x3c Close corresponding OPEN of #n. */ -#define SROPEN 61 /* 0x3d Same as OPEN, but for script run */ -#define SRCLOSE 62 /* 0x3e Close preceding SROPEN */ -#define REF 63 /* 0x3f Match some already matched string */ -#define REFF 64 /* 0x40 Match already matched string, folded using native charset rules for non-utf8 */ -#define REFFL 65 /* 0x41 Match already matched string, folded in loc. */ -#define REFFU 66 /* 0x42 Match already matched string, folded using unicode rules for non-utf8 */ -#define REFFA 67 /* 0x43 Match already matched string, folded using unicode rules for non-utf8, no mixing ASCII, non-ASCII */ -#define NREF 68 /* 0x44 Match some already matched string */ -#define NREFF 69 /* 0x45 Match already matched string, folded using native charset rules for non-utf8 */ -#define NREFFL 70 /* 0x46 Match already matched string, folded in loc. */ -#define NREFFU 71 /* 0x47 Match already matched string, folded using unicode rules for non-utf8 */ -#define NREFFA 72 /* 0x48 Match already matched string, folded using unicode rules for non-utf8, no mixing ASCII, non-ASCII */ -#define LONGJMP 73 /* 0x49 Jump far away. */ -#define BRANCHJ 74 /* 0x4a BRANCH with long offset. */ -#define IFMATCH 75 /* 0x4b Succeeds if the following matches. */ -#define UNLESSM 76 /* 0x4c Fails if the following matches. */ -#define SUSPEND 77 /* 0x4d "Independent" sub-RE. */ -#define IFTHEN 78 /* 0x4e Switch, should be preceded by switcher. */ -#define GROUPP 79 /* 0x4f Whether the group matched. */ -#define EVAL 80 /* 0x50 Execute some Perl code. */ -#define MINMOD 81 /* 0x51 Next operator is not greedy. */ -#define LOGICAL 82 /* 0x52 Next opcode should set the flag only. */ -#define RENUM 83 /* 0x53 Group with independently numbered parens. */ -#define TRIE 84 /* 0x54 Match many EXACT(F[ALU]?)? at once. flags==type */ -#define TRIEC 85 /* 0x55 Same as TRIE, but with embedded charclass data */ -#define AHOCORASICK 86 /* 0x56 Aho Corasick stclass. flags==type */ -#define AHOCORASICKC 87 /* 0x57 Same as AHOCORASICK, but with embedded charclass data */ -#define GOSUB 88 /* 0x58 recurse to paren arg1 at (signed) ofs arg2 */ -#define NGROUPP 89 /* 0x59 Whether the group matched. */ -#define INSUBP 90 /* 0x5a Whether we are in a specific recurse. */ -#define DEFINEP 91 /* 0x5b Never execute directly. */ -#define ENDLIKE 92 /* 0x5c Used only for the type field of verbs */ -#define OPFAIL 93 /* 0x5d Same as (?!), but with verb arg */ -#define ACCEPT 94 /* 0x5e Accepts the current matched string, with verbar */ -#define VERB 95 /* 0x5f Used only for the type field of verbs */ -#define PRUNE 96 /* 0x60 Pattern fails at this startpoint if no-backtracking through this */ -#define MARKPOINT 97 /* 0x61 Push the current location for rollback by cut. */ -#define SKIP 98 /* 0x62 On failure skip forward (to the mark) before retrying */ -#define COMMIT 99 /* 0x63 Pattern fails outright if backtracking through this */ -#define CUTGROUP 100 /* 0x64 On failure go to the next alternation in the group */ -#define KEEPS 101 /* 0x65 $& begins here. */ -#define LNBREAK 102 /* 0x66 generic newline pattern */ -#define OPTIMIZED 103 /* 0x67 Placeholder for dump. */ -#define PSEUDO 104 /* 0x68 Pseudo opcode for internal use. */ - /* ------------ 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 */ - -/* PL_regkind[] What type of regop or state is this. */ +#define REGNODE_MAX 111 +#define REGMATCH_STATE_MAX 153 + +/* -- For regexec.c to switch on target being utf8 (t8) or not (tb, b='byte'); */ +#define with_t_UTF8ness(op, t_utf8) (((op) << 1) + (cBOOL(t_utf8))) +/* -- same, but also 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 0 /* 0x000 */ +#define END_t8 1 /* 0x001 */ +#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 2 /* 0x002 */ +#define SUCCEED_t8 3 /* 0x003 */ +#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 4 /* 0x004 */ +#define SBOL_t8 5 /* 0x005 */ +#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 4 /* 0x004 */ +#define BOL_t8 5 /* 0x005 */ +#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 6 /* 0x006 */ +#define MBOL_t8 7 /* 0x007 */ +#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 8 /* 0x008 */ +#define SEOL_t8 9 /* 0x009 */ +#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 8 /* 0x008 */ +#define EOL_t8 9 /* 0x009 */ +#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 10 /* 0x00a */ +#define MEOL_t8 11 /* 0x00b */ +#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 12 /* 0x00c */ +#define EOS_t8 13 /* 0x00d */ +#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 14 /* 0x00e */ +#define GPOS_t8 15 /* 0x00f */ +#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 16 /* 0x010 */ +#define BOUND_t8 17 /* 0x011 */ +#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 18 /* 0x012 */ +#define BOUNDL_t8 19 /* 0x013 */ +#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 20 /* 0x014 */ +#define BOUNDU_t8 21 /* 0x015 */ +#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 22 /* 0x016 */ +#define BOUNDA_t8 23 /* 0x017 */ +#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 24 /* 0x018 */ +#define NBOUND_t8 25 /* 0x019 */ +#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 26 /* 0x01a */ +#define NBOUNDL_t8 27 /* 0x01b */ +#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 28 /* 0x01c */ +#define NBOUNDU_t8 29 /* 0x01d */ +#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 30 /* 0x01e */ +#define NBOUNDA_t8 31 /* 0x01f */ +#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 32 /* 0x020 */ +#define REG_ANY_t8 33 /* 0x021 */ +#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 34 /* 0x022 */ +#define SANY_t8 35 /* 0x023 */ +#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 36 /* 0x024 */ +#define ANYOF_t8 37 /* 0x025 */ +#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 38 /* 0x026 */ +#define ANYOFD_t8 39 /* 0x027 */ +#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 40 /* 0x028 */ +#define ANYOFL_t8 41 /* 0x029 */ +#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 42 /* 0x02a */ +#define ANYOFPOSIXL_t8 43 /* 0x02b */ +#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 44 /* 0x02c */ +#define ANYOFH_t8 45 /* 0x02d */ +#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 46 /* 0x02e */ +#define ANYOFHb_t8 47 /* 0x02f */ +#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 48 /* 0x030 */ +#define ANYOFHr_t8 49 /* 0x031 */ +#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 50 /* 0x032 */ +#define ANYOFHs_t8 51 /* 0x033 */ +#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 52 /* 0x034 */ +#define ANYOFR_t8 53 /* 0x035 */ +#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 54 /* 0x036 */ +#define ANYOFRb_t8 55 /* 0x037 */ +#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 ANYOFHbbm 28 /* 0x1c Like ANYOFHb, but only + for 2-byte UTF-8 characters; + uses a bitmap to match the + continuation byte */ +#define ANYOFHbbm_tb 56 /* 0x038 */ +#define ANYOFHbbm_t8 57 /* 0x039 */ +#define ANYOFHbbm_tb_pb 112 /* 0x070 */ +#define ANYOFHbbm_tb_p8 113 /* 0x071 */ +#define ANYOFHbbm_t8_pb 114 /* 0x072 */ +#define ANYOFHbbm_t8_p8 115 /* 0x073 */ + +#define ANYOFM 29 /* 0x1d Like ANYOF, but matches + an invariant byte as + determined by the mask and + arg */ +#define ANYOFM_tb 58 /* 0x03a */ +#define ANYOFM_t8 59 /* 0x03b */ +#define ANYOFM_tb_pb 116 /* 0x074 */ +#define ANYOFM_tb_p8 117 /* 0x075 */ +#define ANYOFM_t8_pb 118 /* 0x076 */ +#define ANYOFM_t8_p8 119 /* 0x077 */ + +#define NANYOFM 30 /* 0x1e complement of ANYOFM */ +#define NANYOFM_tb 60 /* 0x03c */ +#define NANYOFM_t8 61 /* 0x03d */ +#define NANYOFM_tb_pb 120 /* 0x078 */ +#define NANYOFM_tb_p8 121 /* 0x079 */ +#define NANYOFM_t8_pb 122 /* 0x07a */ +#define NANYOFM_t8_p8 123 /* 0x07b */ + +#define POSIXD 31 /* 0x1f Some [[:class:]] under + /d; the FLAGS field gives + which one */ +#define POSIXD_tb 62 /* 0x03e */ +#define POSIXD_t8 63 /* 0x03f */ +#define POSIXD_tb_pb 124 /* 0x07c */ +#define POSIXD_tb_p8 125 /* 0x07d */ +#define POSIXD_t8_pb 126 /* 0x07e */ +#define POSIXD_t8_p8 127 /* 0x07f */ + +#define POSIXL 32 /* 0x20 Some [[:class:]] under + /l; the FLAGS field gives + which one */ +#define POSIXL_tb 64 /* 0x040 */ +#define POSIXL_t8 65 /* 0x041 */ +#define POSIXL_tb_pb 128 /* 0x080 */ +#define POSIXL_tb_p8 129 /* 0x081 */ +#define POSIXL_t8_pb 130 /* 0x082 */ +#define POSIXL_t8_p8 131 /* 0x083 */ + +#define POSIXU 33 /* 0x21 Some [[:class:]] under + /u; the FLAGS field gives + which one */ +#define POSIXU_tb 66 /* 0x042 */ +#define POSIXU_t8 67 /* 0x043 */ +#define POSIXU_tb_pb 132 /* 0x084 */ +#define POSIXU_tb_p8 133 /* 0x085 */ +#define POSIXU_t8_pb 134 /* 0x086 */ +#define POSIXU_t8_p8 135 /* 0x087 */ + +#define POSIXA 34 /* 0x22 Some [[:class:]] under + /a; the FLAGS field gives + which one */ +#define POSIXA_tb 68 /* 0x044 */ +#define POSIXA_t8 69 /* 0x045 */ +#define POSIXA_tb_pb 136 /* 0x088 */ +#define POSIXA_tb_p8 137 /* 0x089 */ +#define POSIXA_t8_pb 138 /* 0x08a */ +#define POSIXA_t8_p8 139 /* 0x08b */ + +#define NPOSIXD 35 /* 0x23 complement of POSIXD, + [[:^class:]] */ +#define NPOSIXD_tb 70 /* 0x046 */ +#define NPOSIXD_t8 71 /* 0x047 */ +#define NPOSIXD_tb_pb 140 /* 0x08c */ +#define NPOSIXD_tb_p8 141 /* 0x08d */ +#define NPOSIXD_t8_pb 142 /* 0x08e */ +#define NPOSIXD_t8_p8 143 /* 0x08f */ + +#define NPOSIXL 36 /* 0x24 complement of POSIXL, + [[:^class:]] */ +#define NPOSIXL_tb 72 /* 0x048 */ +#define NPOSIXL_t8 73 /* 0x049 */ +#define NPOSIXL_tb_pb 144 /* 0x090 */ +#define NPOSIXL_tb_p8 145 /* 0x091 */ +#define NPOSIXL_t8_pb 146 /* 0x092 */ +#define NPOSIXL_t8_p8 147 /* 0x093 */ + +#define NPOSIXU 37 /* 0x25 complement of POSIXU, + [[:^class:]] */ +#define NPOSIXU_tb 74 /* 0x04a */ +#define NPOSIXU_t8 75 /* 0x04b */ +#define NPOSIXU_tb_pb 148 /* 0x094 */ +#define NPOSIXU_tb_p8 149 /* 0x095 */ +#define NPOSIXU_t8_pb 150 /* 0x096 */ +#define NPOSIXU_t8_p8 151 /* 0x097 */ + +#define NPOSIXA 38 /* 0x26 complement of POSIXA, + [[:^class:]] */ +#define NPOSIXA_tb 76 /* 0x04c */ +#define NPOSIXA_t8 77 /* 0x04d */ +#define NPOSIXA_tb_pb 152 /* 0x098 */ +#define NPOSIXA_tb_p8 153 /* 0x099 */ +#define NPOSIXA_t8_pb 154 /* 0x09a */ +#define NPOSIXA_t8_p8 155 /* 0x09b */ + +#define CLUMP 39 /* 0x27 Match any extended + grapheme cluster sequence */ +#define CLUMP_tb 78 /* 0x04e */ +#define CLUMP_t8 79 /* 0x04f */ +#define CLUMP_tb_pb 156 /* 0x09c */ +#define CLUMP_tb_p8 157 /* 0x09d */ +#define CLUMP_t8_pb 158 /* 0x09e */ +#define CLUMP_t8_p8 159 /* 0x09f */ + +#define BRANCH 40 /* 0x28 Match this alternative, + or the next... */ +#define BRANCH_tb 80 /* 0x050 */ +#define BRANCH_t8 81 /* 0x051 */ +#define BRANCH_tb_pb 160 /* 0x0a0 */ +#define BRANCH_tb_p8 161 /* 0x0a1 */ +#define BRANCH_t8_pb 162 /* 0x0a2 */ +#define BRANCH_t8_p8 163 /* 0x0a3 */ + +#define EXACT 41 /* 0x29 Match this string + (flags field is the length). + */ +#define EXACT_tb 82 /* 0x052 */ +#define EXACT_t8 83 /* 0x053 */ +#define EXACT_tb_pb 164 /* 0x0a4 */ +#define EXACT_tb_p8 165 /* 0x0a5 */ +#define EXACT_t8_pb 166 /* 0x0a6 */ +#define EXACT_t8_p8 167 /* 0x0a7 */ + +#define LEXACT 42 /* 0x2a Match this long string + (preceded by length; flags + unused). */ +#define LEXACT_tb 84 /* 0x054 */ +#define LEXACT_t8 85 /* 0x055 */ +#define LEXACT_tb_pb 168 /* 0x0a8 */ +#define LEXACT_tb_p8 169 /* 0x0a9 */ +#define LEXACT_t8_pb 170 /* 0x0aa */ +#define LEXACT_t8_p8 171 /* 0x0ab */ + +#define EXACTL 43 /* 0x2b Like EXACT, but /l is + in effect (used so + locale-related warnings can + be checked for) */ +#define EXACTL_tb 86 /* 0x056 */ +#define EXACTL_t8 87 /* 0x057 */ +#define EXACTL_tb_pb 172 /* 0x0ac */ +#define EXACTL_tb_p8 173 /* 0x0ad */ +#define EXACTL_t8_pb 174 /* 0x0ae */ +#define EXACTL_t8_p8 175 /* 0x0af */ + +#define EXACTF 44 /* 0x2c Like EXACT, but match + using /id rules; (string not + UTF-8, ASCII folded; + non-ASCII not) */ +#define EXACTF_tb 88 /* 0x058 */ +#define EXACTF_t8 89 /* 0x059 */ +#define EXACTF_tb_pb 176 /* 0x0b0 */ +#define EXACTF_tb_p8 177 /* 0x0b1 */ +#define EXACTF_t8_pb 178 /* 0x0b2 */ +#define EXACTF_t8_p8 179 /* 0x0b3 */ + +#define EXACTFL 45 /* 0x2d Like EXACT, but match + using /il rules; (string not + likely to be folded) */ +#define EXACTFL_tb 90 /* 0x05a */ +#define EXACTFL_t8 91 /* 0x05b */ +#define EXACTFL_tb_pb 180 /* 0x0b4 */ +#define EXACTFL_tb_p8 181 /* 0x0b5 */ +#define EXACTFL_t8_pb 182 /* 0x0b6 */ +#define EXACTFL_t8_p8 183 /* 0x0b7 */ + +#define EXACTFU 46 /* 0x2e Like EXACT, but match + using /iu rules; (string + folded) */ +#define EXACTFU_tb 92 /* 0x05c */ +#define EXACTFU_t8 93 /* 0x05d */ +#define EXACTFU_tb_pb 184 /* 0x0b8 */ +#define EXACTFU_tb_p8 185 /* 0x0b9 */ +#define EXACTFU_t8_pb 186 /* 0x0ba */ +#define EXACTFU_t8_p8 187 /* 0x0bb */ + +#define EXACTFAA 47 /* 0x2f Like EXACT, but match + using /iaa rules; (string + folded except MICRO in + non-UTF8 patterns; doesn't + contain SHARP S unless + UTF-8; folded length <= + unfolded) */ +#define EXACTFAA_tb 94 /* 0x05e */ +#define EXACTFAA_t8 95 /* 0x05f */ +#define EXACTFAA_tb_pb 188 /* 0x0bc */ +#define EXACTFAA_tb_p8 189 /* 0x0bd */ +#define EXACTFAA_t8_pb 190 /* 0x0be */ +#define EXACTFAA_t8_p8 191 /* 0x0bf */ + +#define EXACTFAA_NO_TRIE 48 /* 0x30 Like EXACTFAA, (string + not UTF-8, folded except: + MICRO, SHARP S; folded + length <= unfolded, not + currently trie-able) */ +#define EXACTFAA_NO_TRIE_tb 96 /* 0x060 */ +#define EXACTFAA_NO_TRIE_t8 97 /* 0x061 */ +#define EXACTFAA_NO_TRIE_tb_pb 192 /* 0x0c0 */ +#define EXACTFAA_NO_TRIE_tb_p8 193 /* 0x0c1 */ +#define EXACTFAA_NO_TRIE_t8_pb 194 /* 0x0c2 */ +#define EXACTFAA_NO_TRIE_t8_p8 195 /* 0x0c3 */ + +#define EXACTFUP 49 /* 0x31 Like EXACT, but match + using /iu rules; (string not + UTF-8, folded except MICRO: + hence Problematic) */ +#define EXACTFUP_tb 98 /* 0x062 */ +#define EXACTFUP_t8 99 /* 0x063 */ +#define EXACTFUP_tb_pb 196 /* 0x0c4 */ +#define EXACTFUP_tb_p8 197 /* 0x0c5 */ +#define EXACTFUP_t8_pb 198 /* 0x0c6 */ +#define EXACTFUP_t8_p8 199 /* 0x0c7 */ + +#define EXACTFLU8 50 /* 0x32 Like EXACTFU, but use + /il, UTF-8, (string is + folded, and everything in it + is above 255 */ +#define EXACTFLU8_tb 100 /* 0x064 */ +#define EXACTFLU8_t8 101 /* 0x065 */ +#define EXACTFLU8_tb_pb 200 /* 0x0c8 */ +#define EXACTFLU8_tb_p8 201 /* 0x0c9 */ +#define EXACTFLU8_t8_pb 202 /* 0x0ca */ +#define EXACTFLU8_t8_p8 203 /* 0x0cb */ + +#define EXACT_REQ8 51 /* 0x33 Like EXACT, but only + UTF-8 encoded targets can + match */ +#define EXACT_REQ8_tb 102 /* 0x066 */ +#define EXACT_REQ8_t8 103 /* 0x067 */ +#define EXACT_REQ8_tb_pb 204 /* 0x0cc */ +#define EXACT_REQ8_tb_p8 205 /* 0x0cd */ +#define EXACT_REQ8_t8_pb 206 /* 0x0ce */ +#define EXACT_REQ8_t8_p8 207 /* 0x0cf */ + +#define LEXACT_REQ8 52 /* 0x34 Like LEXACT, but only + UTF-8 encoded targets can + match */ +#define LEXACT_REQ8_tb 104 /* 0x068 */ +#define LEXACT_REQ8_t8 105 /* 0x069 */ +#define LEXACT_REQ8_tb_pb 208 /* 0x0d0 */ +#define LEXACT_REQ8_tb_p8 209 /* 0x0d1 */ +#define LEXACT_REQ8_t8_pb 210 /* 0x0d2 */ +#define LEXACT_REQ8_t8_p8 211 /* 0x0d3 */ + +#define EXACTFU_REQ8 53 /* 0x35 Like EXACTFU, but only + UTF-8 encoded targets can + match */ +#define EXACTFU_REQ8_tb 106 /* 0x06a */ +#define EXACTFU_REQ8_t8 107 /* 0x06b */ +#define EXACTFU_REQ8_tb_pb 212 /* 0x0d4 */ +#define EXACTFU_REQ8_tb_p8 213 /* 0x0d5 */ +#define EXACTFU_REQ8_t8_pb 214 /* 0x0d6 */ +#define EXACTFU_REQ8_t8_p8 215 /* 0x0d7 */ + +#define EXACTFU_S_EDGE 54 /* 0x36 /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 108 /* 0x06c */ +#define EXACTFU_S_EDGE_t8 109 /* 0x06d */ +#define EXACTFU_S_EDGE_tb_pb 216 /* 0x0d8 */ +#define EXACTFU_S_EDGE_tb_p8 217 /* 0x0d9 */ +#define EXACTFU_S_EDGE_t8_pb 218 /* 0x0da */ +#define EXACTFU_S_EDGE_t8_p8 219 /* 0x0db */ + +#define LNBREAK 55 /* 0x37 generic newline pattern + */ +#define LNBREAK_tb 110 /* 0x06e */ +#define LNBREAK_t8 111 /* 0x06f */ +#define LNBREAK_tb_pb 220 /* 0x0dc */ +#define LNBREAK_tb_p8 221 /* 0x0dd */ +#define LNBREAK_t8_pb 222 /* 0x0de */ +#define LNBREAK_t8_p8 223 /* 0x0df */ + +#define TRIE 56 /* 0x38 Match many + EXACT(F[ALU]?)? at once. + flags==type */ +#define TRIE_tb 112 /* 0x070 */ +#define TRIE_t8 113 /* 0x071 */ +#define TRIE_tb_pb 224 /* 0x0e0 */ +#define TRIE_tb_p8 225 /* 0x0e1 */ +#define TRIE_t8_pb 226 /* 0x0e2 */ +#define TRIE_t8_p8 227 /* 0x0e3 */ + +#define TRIEC 57 /* 0x39 Same as TRIE, but with + embedded charclass data */ +#define TRIEC_tb 114 /* 0x072 */ +#define TRIEC_t8 115 /* 0x073 */ +#define TRIEC_tb_pb 228 /* 0x0e4 */ +#define TRIEC_tb_p8 229 /* 0x0e5 */ +#define TRIEC_t8_pb 230 /* 0x0e6 */ +#define TRIEC_t8_p8 231 /* 0x0e7 */ + +#define AHOCORASICK 58 /* 0x3a Aho Corasick stclass. + flags==type */ +#define AHOCORASICK_tb 116 /* 0x074 */ +#define AHOCORASICK_t8 117 /* 0x075 */ +#define AHOCORASICK_tb_pb 232 /* 0x0e8 */ +#define AHOCORASICK_tb_p8 233 /* 0x0e9 */ +#define AHOCORASICK_t8_pb 234 /* 0x0ea */ +#define AHOCORASICK_t8_p8 235 /* 0x0eb */ + +#define AHOCORASICKC 59 /* 0x3b Same as AHOCORASICK, + but with embedded charclass + data */ +#define AHOCORASICKC_tb 118 /* 0x076 */ +#define AHOCORASICKC_t8 119 /* 0x077 */ +#define AHOCORASICKC_tb_pb 236 /* 0x0ec */ +#define AHOCORASICKC_tb_p8 237 /* 0x0ed */ +#define AHOCORASICKC_t8_pb 238 /* 0x0ee */ +#define AHOCORASICKC_t8_p8 239 /* 0x0ef */ + +#define NOTHING 60 /* 0x3c Match empty string. */ +#define NOTHING_tb 120 /* 0x078 */ +#define NOTHING_t8 121 /* 0x079 */ +#define NOTHING_tb_pb 240 /* 0x0f0 */ +#define NOTHING_tb_p8 241 /* 0x0f1 */ +#define NOTHING_t8_pb 242 /* 0x0f2 */ +#define NOTHING_t8_p8 243 /* 0x0f3 */ + +#define TAIL 61 /* 0x3d Match empty string. Can + jump here from outside. */ +#define TAIL_tb 122 /* 0x07a */ +#define TAIL_t8 123 /* 0x07b */ +#define TAIL_tb_pb 244 /* 0x0f4 */ +#define TAIL_tb_p8 245 /* 0x0f5 */ +#define TAIL_t8_pb 246 /* 0x0f6 */ +#define TAIL_t8_p8 247 /* 0x0f7 */ + +#define STAR 62 /* 0x3e Match this (simple) + thing 0 or more times: + /A{0,}B/ where A is width 1 + char */ +#define STAR_tb 124 /* 0x07c */ +#define STAR_t8 125 /* 0x07d */ +#define STAR_tb_pb 248 /* 0x0f8 */ +#define STAR_tb_p8 249 /* 0x0f9 */ +#define STAR_t8_pb 250 /* 0x0fa */ +#define STAR_t8_p8 251 /* 0x0fb */ + +#define PLUS 63 /* 0x3f Match this (simple) + thing 1 or more times: + /A{1,}B/ where A is width 1 + char */ +#define PLUS_tb 126 /* 0x07e */ +#define PLUS_t8 127 /* 0x07f */ +#define PLUS_tb_pb 252 /* 0x0fc */ +#define PLUS_tb_p8 253 /* 0x0fd */ +#define PLUS_t8_pb 254 /* 0x0fe */ +#define PLUS_t8_p8 255 /* 0x0ff */ + +#define CURLY 64 /* 0x40 Match this (simple) + thing {n,m} times: /A{m,n}B/ + where A is width 1 char */ +#define CURLY_tb 128 /* 0x080 */ +#define CURLY_t8 129 /* 0x081 */ +#define CURLY_tb_pb 256 /* 0x100 */ +#define CURLY_tb_p8 257 /* 0x101 */ +#define CURLY_t8_pb 258 /* 0x102 */ +#define CURLY_t8_p8 259 /* 0x103 */ + +#define CURLYN 65 /* 0x41 Capture next-after-this + simple thing: /(A){m,n}B/ + where A is width 1 char */ +#define CURLYN_tb 130 /* 0x082 */ +#define CURLYN_t8 131 /* 0x083 */ +#define CURLYN_tb_pb 260 /* 0x104 */ +#define CURLYN_tb_p8 261 /* 0x105 */ +#define CURLYN_t8_pb 262 /* 0x106 */ +#define CURLYN_t8_p8 263 /* 0x107 */ + +#define CURLYM 66 /* 0x42 Capture this + medium-complex thing {n,m} + times: /(A){m,n}B/ where A + is fixed-length */ +#define CURLYM_tb 132 /* 0x084 */ +#define CURLYM_t8 133 /* 0x085 */ +#define CURLYM_tb_pb 264 /* 0x108 */ +#define CURLYM_tb_p8 265 /* 0x109 */ +#define CURLYM_t8_pb 266 /* 0x10a */ +#define CURLYM_t8_p8 267 /* 0x10b */ + +#define CURLYX 67 /* 0x43 Match/Capture this + complex thing {n,m} times. + */ +#define CURLYX_tb 134 /* 0x086 */ +#define CURLYX_t8 135 /* 0x087 */ +#define CURLYX_tb_pb 268 /* 0x10c */ +#define CURLYX_tb_p8 269 /* 0x10d */ +#define CURLYX_t8_pb 270 /* 0x10e */ +#define CURLYX_t8_p8 271 /* 0x10f */ + +#define WHILEM 68 /* 0x44 Do curly processing and + see if rest matches. */ +#define WHILEM_tb 136 /* 0x088 */ +#define WHILEM_t8 137 /* 0x089 */ +#define WHILEM_tb_pb 272 /* 0x110 */ +#define WHILEM_tb_p8 273 /* 0x111 */ +#define WHILEM_t8_pb 274 /* 0x112 */ +#define WHILEM_t8_p8 275 /* 0x113 */ + +#define OPEN 69 /* 0x45 Mark this point in + input as start of #n. */ +#define OPEN_tb 138 /* 0x08a */ +#define OPEN_t8 139 /* 0x08b */ +#define OPEN_tb_pb 276 /* 0x114 */ +#define OPEN_tb_p8 277 /* 0x115 */ +#define OPEN_t8_pb 278 /* 0x116 */ +#define OPEN_t8_p8 279 /* 0x117 */ + +#define CLOSE 70 /* 0x46 Close corresponding + OPEN of #n. */ +#define CLOSE_tb 140 /* 0x08c */ +#define CLOSE_t8 141 /* 0x08d */ +#define CLOSE_tb_pb 280 /* 0x118 */ +#define CLOSE_tb_p8 281 /* 0x119 */ +#define CLOSE_t8_pb 282 /* 0x11a */ +#define CLOSE_t8_p8 283 /* 0x11b */ + +#define SROPEN 71 /* 0x47 Same as OPEN, but for + script run */ +#define SROPEN_tb 142 /* 0x08e */ +#define SROPEN_t8 143 /* 0x08f */ +#define SROPEN_tb_pb 284 /* 0x11c */ +#define SROPEN_tb_p8 285 /* 0x11d */ +#define SROPEN_t8_pb 286 /* 0x11e */ +#define SROPEN_t8_p8 287 /* 0x11f */ + +#define SRCLOSE 72 /* 0x48 Close preceding SROPEN + */ +#define SRCLOSE_tb 144 /* 0x090 */ +#define SRCLOSE_t8 145 /* 0x091 */ +#define SRCLOSE_tb_pb 288 /* 0x120 */ +#define SRCLOSE_tb_p8 289 /* 0x121 */ +#define SRCLOSE_t8_pb 290 /* 0x122 */ +#define SRCLOSE_t8_p8 291 /* 0x123 */ + +#define REF 73 /* 0x49 Match some already + matched string */ +#define REF_tb 146 /* 0x092 */ +#define REF_t8 147 /* 0x093 */ +#define REF_tb_pb 292 /* 0x124 */ +#define REF_tb_p8 293 /* 0x125 */ +#define REF_t8_pb 294 /* 0x126 */ +#define REF_t8_p8 295 /* 0x127 */ + +#define REFF 74 /* 0x4a Match already matched + string, using /di rules. */ +#define REFF_tb 148 /* 0x094 */ +#define REFF_t8 149 /* 0x095 */ +#define REFF_tb_pb 296 /* 0x128 */ +#define REFF_tb_p8 297 /* 0x129 */ +#define REFF_t8_pb 298 /* 0x12a */ +#define REFF_t8_p8 299 /* 0x12b */ + +#define REFFL 75 /* 0x4b Match already matched + string, using /li rules. */ +#define REFFL_tb 150 /* 0x096 */ +#define REFFL_t8 151 /* 0x097 */ +#define REFFL_tb_pb 300 /* 0x12c */ +#define REFFL_tb_p8 301 /* 0x12d */ +#define REFFL_t8_pb 302 /* 0x12e */ +#define REFFL_t8_p8 303 /* 0x12f */ + +#define REFFU 76 /* 0x4c Match already matched + string, usng /ui. */ +#define REFFU_tb 152 /* 0x098 */ +#define REFFU_t8 153 /* 0x099 */ +#define REFFU_tb_pb 304 /* 0x130 */ +#define REFFU_tb_p8 305 /* 0x131 */ +#define REFFU_t8_pb 306 /* 0x132 */ +#define REFFU_t8_p8 307 /* 0x133 */ + +#define REFFA 77 /* 0x4d Match already matched + string, using /aai rules. */ +#define REFFA_tb 154 /* 0x09a */ +#define REFFA_t8 155 /* 0x09b */ +#define REFFA_tb_pb 308 /* 0x134 */ +#define REFFA_tb_p8 309 /* 0x135 */ +#define REFFA_t8_pb 310 /* 0x136 */ +#define REFFA_t8_p8 311 /* 0x137 */ + +#define REFN 78 /* 0x4e Match some already + matched string */ +#define REFN_tb 156 /* 0x09c */ +#define REFN_t8 157 /* 0x09d */ +#define REFN_tb_pb 312 /* 0x138 */ +#define REFN_tb_p8 313 /* 0x139 */ +#define REFN_t8_pb 314 /* 0x13a */ +#define REFN_t8_p8 315 /* 0x13b */ + +#define REFFN 79 /* 0x4f Match already matched + string, using /di rules. */ +#define REFFN_tb 158 /* 0x09e */ +#define REFFN_t8 159 /* 0x09f */ +#define REFFN_tb_pb 316 /* 0x13c */ +#define REFFN_tb_p8 317 /* 0x13d */ +#define REFFN_t8_pb 318 /* 0x13e */ +#define REFFN_t8_p8 319 /* 0x13f */ + +#define REFFLN 80 /* 0x50 Match already matched + string, using /li rules. */ +#define REFFLN_tb 160 /* 0x0a0 */ +#define REFFLN_t8 161 /* 0x0a1 */ +#define REFFLN_tb_pb 320 /* 0x140 */ +#define REFFLN_tb_p8 321 /* 0x141 */ +#define REFFLN_t8_pb 322 /* 0x142 */ +#define REFFLN_t8_p8 323 /* 0x143 */ + +#define REFFUN 81 /* 0x51 Match already matched + string, using /ui rules. */ +#define REFFUN_tb 162 /* 0x0a2 */ +#define REFFUN_t8 163 /* 0x0a3 */ +#define REFFUN_tb_pb 324 /* 0x144 */ +#define REFFUN_tb_p8 325 /* 0x145 */ +#define REFFUN_t8_pb 326 /* 0x146 */ +#define REFFUN_t8_p8 327 /* 0x147 */ + +#define REFFAN 82 /* 0x52 Match already matched + string, using /aai rules. */ +#define REFFAN_tb 164 /* 0x0a4 */ +#define REFFAN_t8 165 /* 0x0a5 */ +#define REFFAN_tb_pb 328 /* 0x148 */ +#define REFFAN_tb_p8 329 /* 0x149 */ +#define REFFAN_t8_pb 330 /* 0x14a */ +#define REFFAN_t8_p8 331 /* 0x14b */ + +#define LONGJMP 83 /* 0x53 Jump far away. */ +#define LONGJMP_tb 166 /* 0x0a6 */ +#define LONGJMP_t8 167 /* 0x0a7 */ +#define LONGJMP_tb_pb 332 /* 0x14c */ +#define LONGJMP_tb_p8 333 /* 0x14d */ +#define LONGJMP_t8_pb 334 /* 0x14e */ +#define LONGJMP_t8_p8 335 /* 0x14f */ + +#define BRANCHJ 84 /* 0x54 BRANCH with long + offset. */ +#define BRANCHJ_tb 168 /* 0x0a8 */ +#define BRANCHJ_t8 169 /* 0x0a9 */ +#define BRANCHJ_tb_pb 336 /* 0x150 */ +#define BRANCHJ_tb_p8 337 /* 0x151 */ +#define BRANCHJ_t8_pb 338 /* 0x152 */ +#define BRANCHJ_t8_p8 339 /* 0x153 */ + +#define IFMATCH 85 /* 0x55 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 170 /* 0x0aa */ +#define IFMATCH_t8 171 /* 0x0ab */ +#define IFMATCH_tb_pb 340 /* 0x154 */ +#define IFMATCH_tb_p8 341 /* 0x155 */ +#define IFMATCH_t8_pb 342 /* 0x156 */ +#define IFMATCH_t8_p8 343 /* 0x157 */ + +#define UNLESSM 86 /* 0x56 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 172 /* 0x0ac */ +#define UNLESSM_t8 173 /* 0x0ad */ +#define UNLESSM_tb_pb 344 /* 0x158 */ +#define UNLESSM_tb_p8 345 /* 0x159 */ +#define UNLESSM_t8_pb 346 /* 0x15a */ +#define UNLESSM_t8_p8 347 /* 0x15b */ + +#define SUSPEND 87 /* 0x57 "Independent" sub-RE. + */ +#define SUSPEND_tb 174 /* 0x0ae */ +#define SUSPEND_t8 175 /* 0x0af */ +#define SUSPEND_tb_pb 348 /* 0x15c */ +#define SUSPEND_tb_p8 349 /* 0x15d */ +#define SUSPEND_t8_pb 350 /* 0x15e */ +#define SUSPEND_t8_p8 351 /* 0x15f */ + +#define IFTHEN 88 /* 0x58 Switch, should be + preceded by switcher. */ +#define IFTHEN_tb 176 /* 0x0b0 */ +#define IFTHEN_t8 177 /* 0x0b1 */ +#define IFTHEN_tb_pb 352 /* 0x160 */ +#define IFTHEN_tb_p8 353 /* 0x161 */ +#define IFTHEN_t8_pb 354 /* 0x162 */ +#define IFTHEN_t8_p8 355 /* 0x163 */ + +#define GROUPP 89 /* 0x59 Whether the group + matched. */ +#define GROUPP_tb 178 /* 0x0b2 */ +#define GROUPP_t8 179 /* 0x0b3 */ +#define GROUPP_tb_pb 356 /* 0x164 */ +#define GROUPP_tb_p8 357 /* 0x165 */ +#define GROUPP_t8_pb 358 /* 0x166 */ +#define GROUPP_t8_p8 359 /* 0x167 */ + +#define EVAL 90 /* 0x5a Execute some Perl code. + */ +#define EVAL_tb 180 /* 0x0b4 */ +#define EVAL_t8 181 /* 0x0b5 */ +#define EVAL_tb_pb 360 /* 0x168 */ +#define EVAL_tb_p8 361 /* 0x169 */ +#define EVAL_t8_pb 362 /* 0x16a */ +#define EVAL_t8_p8 363 /* 0x16b */ + +#define MINMOD 91 /* 0x5b Next operator is not + greedy. */ +#define MINMOD_tb 182 /* 0x0b6 */ +#define MINMOD_t8 183 /* 0x0b7 */ +#define MINMOD_tb_pb 364 /* 0x16c */ +#define MINMOD_tb_p8 365 /* 0x16d */ +#define MINMOD_t8_pb 366 /* 0x16e */ +#define MINMOD_t8_p8 367 /* 0x16f */ + +#define LOGICAL 92 /* 0x5c Next opcode should set + the flag only. */ +#define LOGICAL_tb 184 /* 0x0b8 */ +#define LOGICAL_t8 185 /* 0x0b9 */ +#define LOGICAL_tb_pb 368 /* 0x170 */ +#define LOGICAL_tb_p8 369 /* 0x171 */ +#define LOGICAL_t8_pb 370 /* 0x172 */ +#define LOGICAL_t8_p8 371 /* 0x173 */ + +#define RENUM 93 /* 0x5d Group with + independently numbered + parens. */ +#define RENUM_tb 186 /* 0x0ba */ +#define RENUM_t8 187 /* 0x0bb */ +#define RENUM_tb_pb 372 /* 0x174 */ +#define RENUM_tb_p8 373 /* 0x175 */ +#define RENUM_t8_pb 374 /* 0x176 */ +#define RENUM_t8_p8 375 /* 0x177 */ + +#define GOSUB 94 /* 0x5e recurse to paren arg1 + at (signed) ofs arg2 */ +#define GOSUB_tb 188 /* 0x0bc */ +#define GOSUB_t8 189 /* 0x0bd */ +#define GOSUB_tb_pb 376 /* 0x178 */ +#define GOSUB_tb_p8 377 /* 0x179 */ +#define GOSUB_t8_pb 378 /* 0x17a */ +#define GOSUB_t8_p8 379 /* 0x17b */ + +#define GROUPPN 95 /* 0x5f Whether the group + matched. */ +#define GROUPPN_tb 190 /* 0x0be */ +#define GROUPPN_t8 191 /* 0x0bf */ +#define GROUPPN_tb_pb 380 /* 0x17c */ +#define GROUPPN_tb_p8 381 /* 0x17d */ +#define GROUPPN_t8_pb 382 /* 0x17e */ +#define GROUPPN_t8_p8 383 /* 0x17f */ + +#define INSUBP 96 /* 0x60 Whether we are in a + specific recurse. */ +#define INSUBP_tb 192 /* 0x0c0 */ +#define INSUBP_t8 193 /* 0x0c1 */ +#define INSUBP_tb_pb 384 /* 0x180 */ +#define INSUBP_tb_p8 385 /* 0x181 */ +#define INSUBP_t8_pb 386 /* 0x182 */ +#define INSUBP_t8_p8 387 /* 0x183 */ + +#define DEFINEP 97 /* 0x61 Never execute directly. + */ +#define DEFINEP_tb 194 /* 0x0c2 */ +#define DEFINEP_t8 195 /* 0x0c3 */ +#define DEFINEP_tb_pb 388 /* 0x184 */ +#define DEFINEP_tb_p8 389 /* 0x185 */ +#define DEFINEP_t8_pb 390 /* 0x186 */ +#define DEFINEP_t8_p8 391 /* 0x187 */ + +#define ENDLIKE 98 /* 0x62 Used only for the type + field of verbs */ +#define ENDLIKE_tb 196 /* 0x0c4 */ +#define ENDLIKE_t8 197 /* 0x0c5 */ +#define ENDLIKE_tb_pb 392 /* 0x188 */ +#define ENDLIKE_tb_p8 393 /* 0x189 */ +#define ENDLIKE_t8_pb 394 /* 0x18a */ +#define ENDLIKE_t8_p8 395 /* 0x18b */ + +#define OPFAIL 99 /* 0x63 Same as (?!), but with + verb arg */ +#define OPFAIL_tb 198 /* 0x0c6 */ +#define OPFAIL_t8 199 /* 0x0c7 */ +#define OPFAIL_tb_pb 396 /* 0x18c */ +#define OPFAIL_tb_p8 397 /* 0x18d */ +#define OPFAIL_t8_pb 398 /* 0x18e */ +#define OPFAIL_t8_p8 399 /* 0x18f */ + +#define ACCEPT 100 /* 0x64 Accepts the current + matched string, with verbar + */ +#define ACCEPT_tb 200 /* 0x0c8 */ +#define ACCEPT_t8 201 /* 0x0c9 */ +#define ACCEPT_tb_pb 400 /* 0x190 */ +#define ACCEPT_tb_p8 401 /* 0x191 */ +#define ACCEPT_t8_pb 402 /* 0x192 */ +#define ACCEPT_t8_p8 403 /* 0x193 */ + +#define VERB 101 /* 0x65 Used only for the type + field of verbs */ +#define VERB_tb 202 /* 0x0ca */ +#define VERB_t8 203 /* 0x0cb */ +#define VERB_tb_pb 404 /* 0x194 */ +#define VERB_tb_p8 405 /* 0x195 */ +#define VERB_t8_pb 406 /* 0x196 */ +#define VERB_t8_p8 407 /* 0x197 */ + +#define PRUNE 102 /* 0x66 Pattern fails at this + startpoint if + no-backtracking through this + */ +#define PRUNE_tb 204 /* 0x0cc */ +#define PRUNE_t8 205 /* 0x0cd */ +#define PRUNE_tb_pb 408 /* 0x198 */ +#define PRUNE_tb_p8 409 /* 0x199 */ +#define PRUNE_t8_pb 410 /* 0x19a */ +#define PRUNE_t8_p8 411 /* 0x19b */ + +#define MARKPOINT 103 /* 0x67 Push the current + location for rollback by + cut. */ +#define MARKPOINT_tb 206 /* 0x0ce */ +#define MARKPOINT_t8 207 /* 0x0cf */ +#define MARKPOINT_tb_pb 412 /* 0x19c */ +#define MARKPOINT_tb_p8 413 /* 0x19d */ +#define MARKPOINT_t8_pb 414 /* 0x19e */ +#define MARKPOINT_t8_p8 415 /* 0x19f */ + +#define SKIP 104 /* 0x68 On failure skip forward + (to the mark) before + retrying */ +#define SKIP_tb 208 /* 0x0d0 */ +#define SKIP_t8 209 /* 0x0d1 */ +#define SKIP_tb_pb 416 /* 0x1a0 */ +#define SKIP_tb_p8 417 /* 0x1a1 */ +#define SKIP_t8_pb 418 /* 0x1a2 */ +#define SKIP_t8_p8 419 /* 0x1a3 */ + +#define COMMIT 105 /* 0x69 Pattern fails outright + if backtracking through this + */ +#define COMMIT_tb 210 /* 0x0d2 */ +#define COMMIT_t8 211 /* 0x0d3 */ +#define COMMIT_tb_pb 420 /* 0x1a4 */ +#define COMMIT_tb_p8 421 /* 0x1a5 */ +#define COMMIT_t8_pb 422 /* 0x1a6 */ +#define COMMIT_t8_p8 423 /* 0x1a7 */ + +#define CUTGROUP 106 /* 0x6a On failure go to the + next alternation in the + group */ +#define CUTGROUP_tb 212 /* 0x0d4 */ +#define CUTGROUP_t8 213 /* 0x0d5 */ +#define CUTGROUP_tb_pb 424 /* 0x1a8 */ +#define CUTGROUP_tb_p8 425 /* 0x1a9 */ +#define CUTGROUP_t8_pb 426 /* 0x1aa */ +#define CUTGROUP_t8_p8 427 /* 0x1ab */ + +#define KEEPS 107 /* 0x6b $& begins here. */ +#define KEEPS_tb 214 /* 0x0d6 */ +#define KEEPS_t8 215 /* 0x0d7 */ +#define KEEPS_tb_pb 428 /* 0x1ac */ +#define KEEPS_tb_p8 429 /* 0x1ad */ +#define KEEPS_t8_pb 430 /* 0x1ae */ +#define KEEPS_t8_p8 431 /* 0x1af */ + +#define LOOKBEHIND_END 108 /* 0x6c Return from lookbehind + (IFMATCH/UNLESSM) and + validate position */ +#define LOOKBEHIND_END_tb 216 /* 0x0d8 */ +#define LOOKBEHIND_END_t8 217 /* 0x0d9 */ +#define LOOKBEHIND_END_tb_pb 432 /* 0x1b0 */ +#define LOOKBEHIND_END_tb_p8 433 /* 0x1b1 */ +#define LOOKBEHIND_END_t8_pb 434 /* 0x1b2 */ +#define LOOKBEHIND_END_t8_p8 435 /* 0x1b3 */ + +#define OPTIMIZED 109 /* 0x6d Placeholder for dump. + */ +#define OPTIMIZED_tb 218 /* 0x0da */ +#define OPTIMIZED_t8 219 /* 0x0db */ +#define OPTIMIZED_tb_pb 436 /* 0x1b4 */ +#define OPTIMIZED_tb_p8 437 /* 0x1b5 */ +#define OPTIMIZED_t8_pb 438 /* 0x1b6 */ +#define OPTIMIZED_t8_p8 439 /* 0x1b7 */ + +#define PSEUDO 110 /* 0x6e Pseudo opcode for + internal use. */ +#define PSEUDO_tb 220 /* 0x0dc */ +#define PSEUDO_t8 221 /* 0x0dd */ +#define PSEUDO_tb_pb 440 /* 0x1b8 */ +#define PSEUDO_tb_p8 441 /* 0x1b9 */ +#define PSEUDO_t8_pb 442 /* 0x1ba */ +#define PSEUDO_t8_p8 443 /* 0x1bb */ + +#define REGEX_SET 111 /* 0x6f Regex set, temporary + node used in + pre-optimization compilation + */ +#define REGEX_SET_tb 222 /* 0x0de */ +#define REGEX_SET_t8 223 /* 0x0df */ +#define REGEX_SET_tb_pb 444 /* 0x1bc */ +#define REGEX_SET_tb_p8 445 /* 0x1bd */ +#define REGEX_SET_t8_pb 446 /* 0x1be */ +#define REGEX_SET_t8_p8 447 /* 0x1bf */ -#ifndef DOINIT -EXTCONST U8 PL_regkind[]; -#else -EXTCONST U8 PL_regkind[] = { - END, /* END */ - END, /* SUCCEED */ - BOL, /* SBOL */ - BOL, /* MBOL */ - EOL, /* SEOL */ - EOL, /* MEOL */ - EOL, /* EOS */ - GPOS, /* GPOS */ - BOUND, /* BOUND */ - BOUND, /* BOUNDL */ - BOUND, /* BOUNDU */ - BOUND, /* BOUNDA */ - NBOUND, /* NBOUND */ - NBOUND, /* NBOUNDL */ - NBOUND, /* NBOUNDU */ - NBOUND, /* NBOUNDA */ - REG_ANY, /* REG_ANY */ - REG_ANY, /* SANY */ - ANYOF, /* ANYOF */ - ANYOF, /* ANYOFD */ - ANYOF, /* ANYOFL */ - ANYOF, /* ANYOFPOSIXL */ - ANYOFM, /* ANYOFM */ - ANYOFM, /* NANYOFM */ - POSIXD, /* POSIXD */ - POSIXD, /* POSIXL */ - POSIXD, /* POSIXU */ - POSIXD, /* POSIXA */ - NPOSIXD, /* NPOSIXD */ - NPOSIXD, /* NPOSIXL */ - NPOSIXD, /* NPOSIXU */ - NPOSIXD, /* NPOSIXA */ - ASCII, /* ASCII */ - ASCII, /* NASCII */ - CLUMP, /* CLUMP */ - BRANCH, /* BRANCH */ - EXACT, /* EXACT */ - EXACT, /* EXACTL */ - EXACT, /* EXACTF */ - EXACT, /* EXACTFL */ - EXACT, /* EXACTFU */ - EXACT, /* EXACTFAA */ - EXACT, /* EXACTFU_SS */ - EXACT, /* EXACTFLU8 */ - EXACT, /* EXACTFAA_NO_TRIE */ - EXACT, /* EXACT_ONLY8 */ - EXACT, /* EXACTFU_ONLY8 */ - EXACT, /* EXACTFS_B_U */ - EXACT, /* EXACTFS_E_U */ - EXACT, /* EXACTFS_BE_U */ - NOTHING, /* NOTHING */ - NOTHING, /* TAIL */ - STAR, /* STAR */ - PLUS, /* PLUS */ - CURLY, /* CURLY */ - CURLY, /* CURLYN */ - CURLY, /* CURLYM */ - CURLY, /* CURLYX */ - WHILEM, /* WHILEM */ - OPEN, /* OPEN */ - CLOSE, /* CLOSE */ - SROPEN, /* SROPEN */ - SRCLOSE, /* SRCLOSE */ - REF, /* REF */ - REF, /* REFF */ - REF, /* REFFL */ - REF, /* REFFU */ - REF, /* REFFA */ - REF, /* NREF */ - REF, /* NREFF */ - REF, /* NREFFL */ - REF, /* NREFFU */ - REF, /* NREFFA */ - LONGJMP, /* LONGJMP */ - BRANCHJ, /* BRANCHJ */ - BRANCHJ, /* IFMATCH */ - BRANCHJ, /* UNLESSM */ - BRANCHJ, /* SUSPEND */ - BRANCHJ, /* IFTHEN */ - GROUPP, /* GROUPP */ - EVAL, /* EVAL */ - MINMOD, /* MINMOD */ - LOGICAL, /* LOGICAL */ - BRANCHJ, /* RENUM */ - TRIE, /* TRIE */ - TRIE, /* TRIEC */ - TRIE, /* AHOCORASICK */ - TRIE, /* AHOCORASICKC */ - GOSUB, /* GOSUB */ - NGROUPP, /* NGROUPP */ - INSUBP, /* INSUBP */ - DEFINEP, /* DEFINEP */ - ENDLIKE, /* ENDLIKE */ - ENDLIKE, /* OPFAIL */ - ENDLIKE, /* ACCEPT */ - VERB, /* VERB */ - VERB, /* PRUNE */ - VERB, /* MARKPOINT */ - VERB, /* SKIP */ - VERB, /* COMMIT */ - VERB, /* CUTGROUP */ - KEEPS, /* KEEPS */ - LNBREAK, /* LNBREAK */ - NOTHING, /* OPTIMIZED */ - PSEUDO, /* PSEUDO */ /* ------------ States ------------- */ - TRIE, /* TRIE_next */ - TRIE, /* TRIE_next_fail */ - EVAL, /* EVAL_B */ - EVAL, /* EVAL_B_fail */ - EVAL, /* EVAL_postponed_AB */ - EVAL, /* EVAL_postponed_AB_fail */ - CURLYX, /* CURLYX_end */ - CURLYX, /* CURLYX_end_fail */ - WHILEM, /* WHILEM_A_pre */ - WHILEM, /* WHILEM_A_pre_fail */ - WHILEM, /* WHILEM_A_min */ - WHILEM, /* WHILEM_A_min_fail */ - WHILEM, /* WHILEM_A_max */ - WHILEM, /* WHILEM_A_max_fail */ - WHILEM, /* WHILEM_B_min */ - WHILEM, /* WHILEM_B_min_fail */ - WHILEM, /* WHILEM_B_max */ - WHILEM, /* WHILEM_B_max_fail */ - BRANCH, /* BRANCH_next */ - BRANCH, /* BRANCH_next_fail */ - CURLYM, /* CURLYM_A */ - CURLYM, /* CURLYM_A_fail */ - CURLYM, /* CURLYM_B */ - CURLYM, /* CURLYM_B_fail */ - IFMATCH, /* IFMATCH_A */ - IFMATCH, /* IFMATCH_A_fail */ - CURLY, /* CURLY_B_min */ - CURLY, /* CURLY_B_min_fail */ - CURLY, /* CURLY_B_max */ - CURLY, /* CURLY_B_max_fail */ - COMMIT, /* COMMIT_next */ - COMMIT, /* COMMIT_next_fail */ - MARKPOINT, /* MARKPOINT_next */ - MARKPOINT, /* MARKPOINT_next_fail */ - SKIP, /* SKIP_next */ - SKIP, /* SKIP_next_fail */ - CUTGROUP, /* CUTGROUP_next */ - CUTGROUP, /* CUTGROUP_next_fail */ - KEEPS, /* KEEPS_next */ - KEEPS, /* KEEPS_next_fail */ -}; -#endif +#define TRIE_next 112 /* 0x70 state for TRIE */ +#define TRIE_next_tb 224 /* 0x0e0 */ +#define TRIE_next_t8 225 /* 0x0e1 */ +#define TRIE_next_tb_pb 448 /* 0x1c0 */ +#define TRIE_next_tb_p8 449 /* 0x1c1 */ +#define TRIE_next_t8_pb 450 /* 0x1c2 */ +#define TRIE_next_t8_p8 451 /* 0x1c3 */ -#ifdef REG_COMP_C - -/* regarglen[] - How large is the argument part of the node (in regnodes) */ - -static const U8 regarglen[] = { - 0, /* END */ - 0, /* SUCCEED */ - 0, /* SBOL */ - 0, /* MBOL */ - 0, /* SEOL */ - 0, /* MEOL */ - 0, /* EOS */ - 0, /* GPOS */ - 0, /* BOUND */ - 0, /* BOUNDL */ - 0, /* BOUNDU */ - 0, /* BOUNDA */ - 0, /* NBOUND */ - 0, /* NBOUNDL */ - 0, /* NBOUNDU */ - 0, /* NBOUNDA */ - 0, /* REG_ANY */ - 0, /* SANY */ - EXTRA_SIZE(struct regnode_charclass), /* ANYOF */ - EXTRA_SIZE(struct regnode_charclass), /* ANYOFD */ - EXTRA_SIZE(struct regnode_charclass), /* ANYOFL */ - EXTRA_SIZE(struct regnode_charclass_posixl), /* ANYOFPOSIXL */ - EXTRA_SIZE(struct regnode_1), /* ANYOFM */ - EXTRA_SIZE(struct regnode_1), /* NANYOFM */ - 0, /* POSIXD */ - 0, /* POSIXL */ - 0, /* POSIXU */ - 0, /* POSIXA */ - 0, /* NPOSIXD */ - 0, /* NPOSIXL */ - 0, /* NPOSIXU */ - 0, /* NPOSIXA */ - 0, /* ASCII */ - 0, /* NASCII */ - 0, /* CLUMP */ - 0, /* BRANCH */ - 0, /* EXACT */ - 0, /* EXACTL */ - 0, /* EXACTF */ - 0, /* EXACTFL */ - 0, /* EXACTFU */ - 0, /* EXACTFAA */ - 0, /* EXACTFU_SS */ - 0, /* EXACTFLU8 */ - 0, /* EXACTFAA_NO_TRIE */ - 0, /* EXACT_ONLY8 */ - 0, /* EXACTFU_ONLY8 */ - 0, /* EXACTFS_B_U */ - 0, /* EXACTFS_E_U */ - 0, /* EXACTFS_BE_U */ - 0, /* NOTHING */ - 0, /* TAIL */ - 0, /* STAR */ - 0, /* PLUS */ - EXTRA_SIZE(struct regnode_2), /* CURLY */ - EXTRA_SIZE(struct regnode_2), /* CURLYN */ - EXTRA_SIZE(struct regnode_2), /* CURLYM */ - EXTRA_SIZE(struct regnode_2), /* CURLYX */ - 0, /* WHILEM */ - EXTRA_SIZE(struct regnode_1), /* OPEN */ - EXTRA_SIZE(struct regnode_1), /* CLOSE */ - 0, /* SROPEN */ - 0, /* SRCLOSE */ - EXTRA_SIZE(struct regnode_1), /* REF */ - EXTRA_SIZE(struct regnode_1), /* REFF */ - EXTRA_SIZE(struct regnode_1), /* REFFL */ - EXTRA_SIZE(struct regnode_1), /* REFFU */ - EXTRA_SIZE(struct regnode_1), /* REFFA */ - EXTRA_SIZE(struct regnode_1), /* NREF */ - EXTRA_SIZE(struct regnode_1), /* NREFF */ - EXTRA_SIZE(struct regnode_1), /* NREFFL */ - EXTRA_SIZE(struct regnode_1), /* NREFFU */ - EXTRA_SIZE(struct regnode_1), /* NREFFA */ - EXTRA_SIZE(struct regnode_1), /* LONGJMP */ - EXTRA_SIZE(struct regnode_1), /* BRANCHJ */ - EXTRA_SIZE(struct regnode_1), /* IFMATCH */ - EXTRA_SIZE(struct regnode_1), /* UNLESSM */ - EXTRA_SIZE(struct regnode_1), /* SUSPEND */ - EXTRA_SIZE(struct regnode_1), /* IFTHEN */ - EXTRA_SIZE(struct regnode_1), /* GROUPP */ - EXTRA_SIZE(struct regnode_2L), /* EVAL */ - 0, /* MINMOD */ - 0, /* LOGICAL */ - EXTRA_SIZE(struct regnode_1), /* RENUM */ - EXTRA_SIZE(struct regnode_1), /* TRIE */ - EXTRA_SIZE(struct regnode_charclass), /* TRIEC */ - EXTRA_SIZE(struct regnode_1), /* AHOCORASICK */ - EXTRA_SIZE(struct regnode_charclass), /* AHOCORASICKC */ - EXTRA_SIZE(struct regnode_2L), /* GOSUB */ - EXTRA_SIZE(struct regnode_1), /* NGROUPP */ - EXTRA_SIZE(struct regnode_1), /* INSUBP */ - EXTRA_SIZE(struct regnode_1), /* DEFINEP */ - 0, /* ENDLIKE */ - EXTRA_SIZE(struct regnode_1), /* OPFAIL */ - EXTRA_SIZE(struct regnode_2L), /* ACCEPT */ - EXTRA_SIZE(struct regnode_1), /* VERB */ - EXTRA_SIZE(struct regnode_1), /* PRUNE */ - EXTRA_SIZE(struct regnode_1), /* MARKPOINT */ - EXTRA_SIZE(struct regnode_1), /* SKIP */ - EXTRA_SIZE(struct regnode_1), /* COMMIT */ - EXTRA_SIZE(struct regnode_1), /* CUTGROUP */ - 0, /* KEEPS */ - 0, /* LNBREAK */ - 0, /* OPTIMIZED */ - 0, /* PSEUDO */ -}; +#define TRIE_next_fail 113 /* 0x71 state for TRIE */ +#define TRIE_next_fail_tb 226 /* 0x0e2 */ +#define TRIE_next_fail_t8 227 /* 0x0e3 */ +#define TRIE_next_fail_tb_pb 452 /* 0x1c4 */ +#define TRIE_next_fail_tb_p8 453 /* 0x1c5 */ +#define TRIE_next_fail_t8_pb 454 /* 0x1c6 */ +#define TRIE_next_fail_t8_p8 455 /* 0x1c7 */ -/* reg_off_by_arg[] - Which argument holds the offset to the next node */ - -static const char reg_off_by_arg[] = { - 0, /* END */ - 0, /* SUCCEED */ - 0, /* SBOL */ - 0, /* MBOL */ - 0, /* SEOL */ - 0, /* MEOL */ - 0, /* EOS */ - 0, /* GPOS */ - 0, /* BOUND */ - 0, /* BOUNDL */ - 0, /* BOUNDU */ - 0, /* BOUNDA */ - 0, /* NBOUND */ - 0, /* NBOUNDL */ - 0, /* NBOUNDU */ - 0, /* NBOUNDA */ - 0, /* REG_ANY */ - 0, /* SANY */ - 0, /* ANYOF */ - 0, /* ANYOFD */ - 0, /* ANYOFL */ - 0, /* ANYOFPOSIXL */ - 0, /* ANYOFM */ - 0, /* NANYOFM */ - 0, /* POSIXD */ - 0, /* POSIXL */ - 0, /* POSIXU */ - 0, /* POSIXA */ - 0, /* NPOSIXD */ - 0, /* NPOSIXL */ - 0, /* NPOSIXU */ - 0, /* NPOSIXA */ - 0, /* ASCII */ - 0, /* NASCII */ - 0, /* CLUMP */ - 0, /* BRANCH */ - 0, /* EXACT */ - 0, /* EXACTL */ - 0, /* EXACTF */ - 0, /* EXACTFL */ - 0, /* EXACTFU */ - 0, /* EXACTFAA */ - 0, /* EXACTFU_SS */ - 0, /* EXACTFLU8 */ - 0, /* EXACTFAA_NO_TRIE */ - 0, /* EXACT_ONLY8 */ - 0, /* EXACTFU_ONLY8 */ - 0, /* EXACTFS_B_U */ - 0, /* EXACTFS_E_U */ - 0, /* EXACTFS_BE_U */ - 0, /* NOTHING */ - 0, /* TAIL */ - 0, /* STAR */ - 0, /* PLUS */ - 0, /* CURLY */ - 0, /* CURLYN */ - 0, /* CURLYM */ - 0, /* CURLYX */ - 0, /* WHILEM */ - 0, /* OPEN */ - 0, /* CLOSE */ - 0, /* SROPEN */ - 0, /* SRCLOSE */ - 0, /* REF */ - 0, /* REFF */ - 0, /* REFFL */ - 0, /* REFFU */ - 0, /* REFFA */ - 0, /* NREF */ - 0, /* NREFF */ - 0, /* NREFFL */ - 0, /* NREFFU */ - 0, /* NREFFA */ - 1, /* LONGJMP */ - 1, /* BRANCHJ */ - 1, /* IFMATCH */ - 1, /* UNLESSM */ - 1, /* SUSPEND */ - 1, /* IFTHEN */ - 0, /* GROUPP */ - 0, /* EVAL */ - 0, /* MINMOD */ - 0, /* LOGICAL */ - 1, /* RENUM */ - 0, /* TRIE */ - 0, /* TRIEC */ - 0, /* AHOCORASICK */ - 0, /* AHOCORASICKC */ - 0, /* GOSUB */ - 0, /* NGROUPP */ - 0, /* INSUBP */ - 0, /* DEFINEP */ - 0, /* ENDLIKE */ - 0, /* OPFAIL */ - 0, /* ACCEPT */ - 0, /* VERB */ - 0, /* PRUNE */ - 0, /* MARKPOINT */ - 0, /* SKIP */ - 0, /* COMMIT */ - 0, /* CUTGROUP */ - 0, /* KEEPS */ - 0, /* LNBREAK */ - 0, /* OPTIMIZED */ - 0, /* PSEUDO */ -}; +#define EVAL_B 114 /* 0x72 state for EVAL */ +#define EVAL_B_tb 228 /* 0x0e4 */ +#define EVAL_B_t8 229 /* 0x0e5 */ +#define EVAL_B_tb_pb 456 /* 0x1c8 */ +#define EVAL_B_tb_p8 457 /* 0x1c9 */ +#define EVAL_B_t8_pb 458 /* 0x1ca */ +#define EVAL_B_t8_p8 459 /* 0x1cb */ + +#define EVAL_B_fail 115 /* 0x73 state for EVAL */ +#define EVAL_B_fail_tb 230 /* 0x0e6 */ +#define EVAL_B_fail_t8 231 /* 0x0e7 */ +#define EVAL_B_fail_tb_pb 460 /* 0x1cc */ +#define EVAL_B_fail_tb_p8 461 /* 0x1cd */ +#define EVAL_B_fail_t8_pb 462 /* 0x1ce */ +#define EVAL_B_fail_t8_p8 463 /* 0x1cf */ + +#define EVAL_postponed_AB 116 /* 0x74 state for EVAL */ +#define EVAL_postponed_AB_tb 232 /* 0x0e8 */ +#define EVAL_postponed_AB_t8 233 /* 0x0e9 */ +#define EVAL_postponed_AB_tb_pb 464 /* 0x1d0 */ +#define EVAL_postponed_AB_tb_p8 465 /* 0x1d1 */ +#define EVAL_postponed_AB_t8_pb 466 /* 0x1d2 */ +#define EVAL_postponed_AB_t8_p8 467 /* 0x1d3 */ + +#define EVAL_postponed_AB_fail 117 /* 0x75 state for EVAL */ +#define EVAL_postponed_AB_fail_tb 234 /* 0x0ea */ +#define EVAL_postponed_AB_fail_t8 235 /* 0x0eb */ +#define EVAL_postponed_AB_fail_tb_pb 468 /* 0x1d4 */ +#define EVAL_postponed_AB_fail_tb_p8 469 /* 0x1d5 */ +#define EVAL_postponed_AB_fail_t8_pb 470 /* 0x1d6 */ +#define EVAL_postponed_AB_fail_t8_p8 471 /* 0x1d7 */ + +#define CURLYX_end 118 /* 0x76 state for CURLYX */ +#define CURLYX_end_tb 236 /* 0x0ec */ +#define CURLYX_end_t8 237 /* 0x0ed */ +#define CURLYX_end_tb_pb 472 /* 0x1d8 */ +#define CURLYX_end_tb_p8 473 /* 0x1d9 */ +#define CURLYX_end_t8_pb 474 /* 0x1da */ +#define CURLYX_end_t8_p8 475 /* 0x1db */ + +#define CURLYX_end_fail 119 /* 0x77 state for CURLYX */ +#define CURLYX_end_fail_tb 238 /* 0x0ee */ +#define CURLYX_end_fail_t8 239 /* 0x0ef */ +#define CURLYX_end_fail_tb_pb 476 /* 0x1dc */ +#define CURLYX_end_fail_tb_p8 477 /* 0x1dd */ +#define CURLYX_end_fail_t8_pb 478 /* 0x1de */ +#define CURLYX_end_fail_t8_p8 479 /* 0x1df */ + +#define WHILEM_A_pre 120 /* 0x78 state for WHILEM */ +#define WHILEM_A_pre_tb 240 /* 0x0f0 */ +#define WHILEM_A_pre_t8 241 /* 0x0f1 */ +#define WHILEM_A_pre_tb_pb 480 /* 0x1e0 */ +#define WHILEM_A_pre_tb_p8 481 /* 0x1e1 */ +#define WHILEM_A_pre_t8_pb 482 /* 0x1e2 */ +#define WHILEM_A_pre_t8_p8 483 /* 0x1e3 */ + +#define WHILEM_A_pre_fail 121 /* 0x79 state for WHILEM */ +#define WHILEM_A_pre_fail_tb 242 /* 0x0f2 */ +#define WHILEM_A_pre_fail_t8 243 /* 0x0f3 */ +#define WHILEM_A_pre_fail_tb_pb 484 /* 0x1e4 */ +#define WHILEM_A_pre_fail_tb_p8 485 /* 0x1e5 */ +#define WHILEM_A_pre_fail_t8_pb 486 /* 0x1e6 */ +#define WHILEM_A_pre_fail_t8_p8 487 /* 0x1e7 */ + +#define WHILEM_A_min 122 /* 0x7a state for WHILEM */ +#define WHILEM_A_min_tb 244 /* 0x0f4 */ +#define WHILEM_A_min_t8 245 /* 0x0f5 */ +#define WHILEM_A_min_tb_pb 488 /* 0x1e8 */ +#define WHILEM_A_min_tb_p8 489 /* 0x1e9 */ +#define WHILEM_A_min_t8_pb 490 /* 0x1ea */ +#define WHILEM_A_min_t8_p8 491 /* 0x1eb */ -#endif /* REG_COMP_C */ +#define WHILEM_A_min_fail 123 /* 0x7b state for WHILEM */ +#define WHILEM_A_min_fail_tb 246 /* 0x0f6 */ +#define WHILEM_A_min_fail_t8 247 /* 0x0f7 */ +#define WHILEM_A_min_fail_tb_pb 492 /* 0x1ec */ +#define WHILEM_A_min_fail_tb_p8 493 /* 0x1ed */ +#define WHILEM_A_min_fail_t8_pb 494 /* 0x1ee */ +#define WHILEM_A_min_fail_t8_p8 495 /* 0x1ef */ +#define WHILEM_A_max 124 /* 0x7c state for WHILEM */ +#define WHILEM_A_max_tb 248 /* 0x0f8 */ +#define WHILEM_A_max_t8 249 /* 0x0f9 */ +#define WHILEM_A_max_tb_pb 496 /* 0x1f0 */ +#define WHILEM_A_max_tb_p8 497 /* 0x1f1 */ +#define WHILEM_A_max_t8_pb 498 /* 0x1f2 */ +#define WHILEM_A_max_t8_p8 499 /* 0x1f3 */ -/* reg_name[] - Opcode/state names in string form, for debugging */ +#define WHILEM_A_max_fail 125 /* 0x7d state for WHILEM */ +#define WHILEM_A_max_fail_tb 250 /* 0x0fa */ +#define WHILEM_A_max_fail_t8 251 /* 0x0fb */ +#define WHILEM_A_max_fail_tb_pb 500 /* 0x1f4 */ +#define WHILEM_A_max_fail_tb_p8 501 /* 0x1f5 */ +#define WHILEM_A_max_fail_t8_pb 502 /* 0x1f6 */ +#define WHILEM_A_max_fail_t8_p8 503 /* 0x1f7 */ + +#define WHILEM_B_min 126 /* 0x7e state for WHILEM */ +#define WHILEM_B_min_tb 252 /* 0x0fc */ +#define WHILEM_B_min_t8 253 /* 0x0fd */ +#define WHILEM_B_min_tb_pb 504 /* 0x1f8 */ +#define WHILEM_B_min_tb_p8 505 /* 0x1f9 */ +#define WHILEM_B_min_t8_pb 506 /* 0x1fa */ +#define WHILEM_B_min_t8_p8 507 /* 0x1fb */ + +#define WHILEM_B_min_fail 127 /* 0x7f state for WHILEM */ +#define WHILEM_B_min_fail_tb 254 /* 0x0fe */ +#define WHILEM_B_min_fail_t8 255 /* 0x0ff */ +#define WHILEM_B_min_fail_tb_pb 508 /* 0x1fc */ +#define WHILEM_B_min_fail_tb_p8 509 /* 0x1fd */ +#define WHILEM_B_min_fail_t8_pb 510 /* 0x1fe */ +#define WHILEM_B_min_fail_t8_p8 511 /* 0x1ff */ + +#define WHILEM_B_max 128 /* 0x80 state for WHILEM */ +#define WHILEM_B_max_tb 256 /* 0x100 */ +#define WHILEM_B_max_t8 257 /* 0x101 */ +#define WHILEM_B_max_tb_pb 512 /* 0x200 */ +#define WHILEM_B_max_tb_p8 513 /* 0x201 */ +#define WHILEM_B_max_t8_pb 514 /* 0x202 */ +#define WHILEM_B_max_t8_p8 515 /* 0x203 */ + +#define WHILEM_B_max_fail 129 /* 0x81 state for WHILEM */ +#define WHILEM_B_max_fail_tb 258 /* 0x102 */ +#define WHILEM_B_max_fail_t8 259 /* 0x103 */ +#define WHILEM_B_max_fail_tb_pb 516 /* 0x204 */ +#define WHILEM_B_max_fail_tb_p8 517 /* 0x205 */ +#define WHILEM_B_max_fail_t8_pb 518 /* 0x206 */ +#define WHILEM_B_max_fail_t8_p8 519 /* 0x207 */ + +#define BRANCH_next 130 /* 0x82 state for BRANCH */ +#define BRANCH_next_tb 260 /* 0x104 */ +#define BRANCH_next_t8 261 /* 0x105 */ +#define BRANCH_next_tb_pb 520 /* 0x208 */ +#define BRANCH_next_tb_p8 521 /* 0x209 */ +#define BRANCH_next_t8_pb 522 /* 0x20a */ +#define BRANCH_next_t8_p8 523 /* 0x20b */ + +#define BRANCH_next_fail 131 /* 0x83 state for BRANCH */ +#define BRANCH_next_fail_tb 262 /* 0x106 */ +#define BRANCH_next_fail_t8 263 /* 0x107 */ +#define BRANCH_next_fail_tb_pb 524 /* 0x20c */ +#define BRANCH_next_fail_tb_p8 525 /* 0x20d */ +#define BRANCH_next_fail_t8_pb 526 /* 0x20e */ +#define BRANCH_next_fail_t8_p8 527 /* 0x20f */ + +#define CURLYM_A 132 /* 0x84 state for CURLYM */ +#define CURLYM_A_tb 264 /* 0x108 */ +#define CURLYM_A_t8 265 /* 0x109 */ +#define CURLYM_A_tb_pb 528 /* 0x210 */ +#define CURLYM_A_tb_p8 529 /* 0x211 */ +#define CURLYM_A_t8_pb 530 /* 0x212 */ +#define CURLYM_A_t8_p8 531 /* 0x213 */ + +#define CURLYM_A_fail 133 /* 0x85 state for CURLYM */ +#define CURLYM_A_fail_tb 266 /* 0x10a */ +#define CURLYM_A_fail_t8 267 /* 0x10b */ +#define CURLYM_A_fail_tb_pb 532 /* 0x214 */ +#define CURLYM_A_fail_tb_p8 533 /* 0x215 */ +#define CURLYM_A_fail_t8_pb 534 /* 0x216 */ +#define CURLYM_A_fail_t8_p8 535 /* 0x217 */ + +#define CURLYM_B 134 /* 0x86 state for CURLYM */ +#define CURLYM_B_tb 268 /* 0x10c */ +#define CURLYM_B_t8 269 /* 0x10d */ +#define CURLYM_B_tb_pb 536 /* 0x218 */ +#define CURLYM_B_tb_p8 537 /* 0x219 */ +#define CURLYM_B_t8_pb 538 /* 0x21a */ +#define CURLYM_B_t8_p8 539 /* 0x21b */ + +#define CURLYM_B_fail 135 /* 0x87 state for CURLYM */ +#define CURLYM_B_fail_tb 270 /* 0x10e */ +#define CURLYM_B_fail_t8 271 /* 0x10f */ +#define CURLYM_B_fail_tb_pb 540 /* 0x21c */ +#define CURLYM_B_fail_tb_p8 541 /* 0x21d */ +#define CURLYM_B_fail_t8_pb 542 /* 0x21e */ +#define CURLYM_B_fail_t8_p8 543 /* 0x21f */ + +#define IFMATCH_A 136 /* 0x88 state for IFMATCH */ +#define IFMATCH_A_tb 272 /* 0x110 */ +#define IFMATCH_A_t8 273 /* 0x111 */ +#define IFMATCH_A_tb_pb 544 /* 0x220 */ +#define IFMATCH_A_tb_p8 545 /* 0x221 */ +#define IFMATCH_A_t8_pb 546 /* 0x222 */ +#define IFMATCH_A_t8_p8 547 /* 0x223 */ + +#define IFMATCH_A_fail 137 /* 0x89 state for IFMATCH */ +#define IFMATCH_A_fail_tb 274 /* 0x112 */ +#define IFMATCH_A_fail_t8 275 /* 0x113 */ +#define IFMATCH_A_fail_tb_pb 548 /* 0x224 */ +#define IFMATCH_A_fail_tb_p8 549 /* 0x225 */ +#define IFMATCH_A_fail_t8_pb 550 /* 0x226 */ +#define IFMATCH_A_fail_t8_p8 551 /* 0x227 */ + +#define CURLY_B_min 138 /* 0x8a state for CURLY */ +#define CURLY_B_min_tb 276 /* 0x114 */ +#define CURLY_B_min_t8 277 /* 0x115 */ +#define CURLY_B_min_tb_pb 552 /* 0x228 */ +#define CURLY_B_min_tb_p8 553 /* 0x229 */ +#define CURLY_B_min_t8_pb 554 /* 0x22a */ +#define CURLY_B_min_t8_p8 555 /* 0x22b */ + +#define CURLY_B_min_fail 139 /* 0x8b state for CURLY */ +#define CURLY_B_min_fail_tb 278 /* 0x116 */ +#define CURLY_B_min_fail_t8 279 /* 0x117 */ +#define CURLY_B_min_fail_tb_pb 556 /* 0x22c */ +#define CURLY_B_min_fail_tb_p8 557 /* 0x22d */ +#define CURLY_B_min_fail_t8_pb 558 /* 0x22e */ +#define CURLY_B_min_fail_t8_p8 559 /* 0x22f */ + +#define CURLY_B_max 140 /* 0x8c state for CURLY */ +#define CURLY_B_max_tb 280 /* 0x118 */ +#define CURLY_B_max_t8 281 /* 0x119 */ +#define CURLY_B_max_tb_pb 560 /* 0x230 */ +#define CURLY_B_max_tb_p8 561 /* 0x231 */ +#define CURLY_B_max_t8_pb 562 /* 0x232 */ +#define CURLY_B_max_t8_p8 563 /* 0x233 */ + +#define CURLY_B_max_fail 141 /* 0x8d state for CURLY */ +#define CURLY_B_max_fail_tb 282 /* 0x11a */ +#define CURLY_B_max_fail_t8 283 /* 0x11b */ +#define CURLY_B_max_fail_tb_pb 564 /* 0x234 */ +#define CURLY_B_max_fail_tb_p8 565 /* 0x235 */ +#define CURLY_B_max_fail_t8_pb 566 /* 0x236 */ +#define CURLY_B_max_fail_t8_p8 567 /* 0x237 */ + +#define COMMIT_next 142 /* 0x8e state for COMMIT */ +#define COMMIT_next_tb 284 /* 0x11c */ +#define COMMIT_next_t8 285 /* 0x11d */ +#define COMMIT_next_tb_pb 568 /* 0x238 */ +#define COMMIT_next_tb_p8 569 /* 0x239 */ +#define COMMIT_next_t8_pb 570 /* 0x23a */ +#define COMMIT_next_t8_p8 571 /* 0x23b */ + +#define COMMIT_next_fail 143 /* 0x8f state for COMMIT */ +#define COMMIT_next_fail_tb 286 /* 0x11e */ +#define COMMIT_next_fail_t8 287 /* 0x11f */ +#define COMMIT_next_fail_tb_pb 572 /* 0x23c */ +#define COMMIT_next_fail_tb_p8 573 /* 0x23d */ +#define COMMIT_next_fail_t8_pb 574 /* 0x23e */ +#define COMMIT_next_fail_t8_p8 575 /* 0x23f */ + +#define MARKPOINT_next 144 /* 0x90 state for MARKPOINT */ +#define MARKPOINT_next_tb 288 /* 0x120 */ +#define MARKPOINT_next_t8 289 /* 0x121 */ +#define MARKPOINT_next_tb_pb 576 /* 0x240 */ +#define MARKPOINT_next_tb_p8 577 /* 0x241 */ +#define MARKPOINT_next_t8_pb 578 /* 0x242 */ +#define MARKPOINT_next_t8_p8 579 /* 0x243 */ + +#define MARKPOINT_next_fail 145 /* 0x91 state for MARKPOINT */ +#define MARKPOINT_next_fail_tb 290 /* 0x122 */ +#define MARKPOINT_next_fail_t8 291 /* 0x123 */ +#define MARKPOINT_next_fail_tb_pb 580 /* 0x244 */ +#define MARKPOINT_next_fail_tb_p8 581 /* 0x245 */ +#define MARKPOINT_next_fail_t8_pb 582 /* 0x246 */ +#define MARKPOINT_next_fail_t8_p8 583 /* 0x247 */ + +#define SKIP_next 146 /* 0x92 state for SKIP */ +#define SKIP_next_tb 292 /* 0x124 */ +#define SKIP_next_t8 293 /* 0x125 */ +#define SKIP_next_tb_pb 584 /* 0x248 */ +#define SKIP_next_tb_p8 585 /* 0x249 */ +#define SKIP_next_t8_pb 586 /* 0x24a */ +#define SKIP_next_t8_p8 587 /* 0x24b */ + +#define SKIP_next_fail 147 /* 0x93 state for SKIP */ +#define SKIP_next_fail_tb 294 /* 0x126 */ +#define SKIP_next_fail_t8 295 /* 0x127 */ +#define SKIP_next_fail_tb_pb 588 /* 0x24c */ +#define SKIP_next_fail_tb_p8 589 /* 0x24d */ +#define SKIP_next_fail_t8_pb 590 /* 0x24e */ +#define SKIP_next_fail_t8_p8 591 /* 0x24f */ + +#define CUTGROUP_next 148 /* 0x94 state for CUTGROUP */ +#define CUTGROUP_next_tb 296 /* 0x128 */ +#define CUTGROUP_next_t8 297 /* 0x129 */ +#define CUTGROUP_next_tb_pb 592 /* 0x250 */ +#define CUTGROUP_next_tb_p8 593 /* 0x251 */ +#define CUTGROUP_next_t8_pb 594 /* 0x252 */ +#define CUTGROUP_next_t8_p8 595 /* 0x253 */ + +#define CUTGROUP_next_fail 149 /* 0x95 state for CUTGROUP */ +#define CUTGROUP_next_fail_tb 298 /* 0x12a */ +#define CUTGROUP_next_fail_t8 299 /* 0x12b */ +#define CUTGROUP_next_fail_tb_pb 596 /* 0x254 */ +#define CUTGROUP_next_fail_tb_p8 597 /* 0x255 */ +#define CUTGROUP_next_fail_t8_pb 598 /* 0x256 */ +#define CUTGROUP_next_fail_t8_p8 599 /* 0x257 */ + +#define KEEPS_next 150 /* 0x96 state for KEEPS */ +#define KEEPS_next_tb 300 /* 0x12c */ +#define KEEPS_next_t8 301 /* 0x12d */ +#define KEEPS_next_tb_pb 600 /* 0x258 */ +#define KEEPS_next_tb_p8 601 /* 0x259 */ +#define KEEPS_next_t8_pb 602 /* 0x25a */ +#define KEEPS_next_t8_p8 603 /* 0x25b */ + +#define KEEPS_next_fail 151 /* 0x97 state for KEEPS */ +#define KEEPS_next_fail_tb 302 /* 0x12e */ +#define KEEPS_next_fail_t8 303 /* 0x12f */ +#define KEEPS_next_fail_tb_pb 604 /* 0x25c */ +#define KEEPS_next_fail_tb_p8 605 /* 0x25d */ +#define KEEPS_next_fail_t8_pb 606 /* 0x25e */ +#define KEEPS_next_fail_t8_p8 607 /* 0x25f */ + +#define REF_next 152 /* 0x98 state for REF */ +#define REF_next_tb 304 /* 0x130 */ +#define REF_next_t8 305 /* 0x131 */ +#define REF_next_tb_pb 608 /* 0x260 */ +#define REF_next_tb_p8 609 /* 0x261 */ +#define REF_next_t8_pb 610 /* 0x262 */ +#define REF_next_t8_p8 611 /* 0x263 */ + +#define REF_next_fail 153 /* 0x99 state for REF */ +#define REF_next_fail_tb 306 /* 0x132 */ +#define REF_next_fail_t8 307 /* 0x133 */ +#define REF_next_fail_tb_pb 612 /* 0x264 */ +#define REF_next_fail_tb_p8 613 /* 0x265 */ +#define REF_next_fail_t8_pb 614 /* 0x266 */ +#define REF_next_fail_t8_p8 615 /* 0x267 */ + + +/* PL_regnode_name[] - Opcode/state names in string form, for debugging */ #ifndef DOINIT -EXTCONST char * PL_reg_name[]; +EXTCONST char * PL_regnode_name[]; #else -EXTCONST char * const PL_reg_name[] = { +EXTCONST char * const PL_regnode_name[] = { "END", /* 0000 */ "SUCCEED", /* 0x01 */ "SBOL", /* 0x02 */ @@ -566,89 +1618,96 @@ 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 */ - "EXACTFS_B_U", /* 0x2f */ - "EXACTFS_E_U", /* 0x30 */ - "EXACTFS_BE_U", /* 0x31 */ - "NOTHING", /* 0x32 */ - "TAIL", /* 0x33 */ - "STAR", /* 0x34 */ - "PLUS", /* 0x35 */ - "CURLY", /* 0x36 */ - "CURLYN", /* 0x37 */ - "CURLYM", /* 0x38 */ - "CURLYX", /* 0x39 */ - "WHILEM", /* 0x3a */ - "OPEN", /* 0x3b */ - "CLOSE", /* 0x3c */ - "SROPEN", /* 0x3d */ - "SRCLOSE", /* 0x3e */ - "REF", /* 0x3f */ - "REFF", /* 0x40 */ - "REFFL", /* 0x41 */ - "REFFU", /* 0x42 */ - "REFFA", /* 0x43 */ - "NREF", /* 0x44 */ - "NREFF", /* 0x45 */ - "NREFFL", /* 0x46 */ - "NREFFU", /* 0x47 */ - "NREFFA", /* 0x48 */ - "LONGJMP", /* 0x49 */ - "BRANCHJ", /* 0x4a */ - "IFMATCH", /* 0x4b */ - "UNLESSM", /* 0x4c */ - "SUSPEND", /* 0x4d */ - "IFTHEN", /* 0x4e */ - "GROUPP", /* 0x4f */ - "EVAL", /* 0x50 */ - "MINMOD", /* 0x51 */ - "LOGICAL", /* 0x52 */ - "RENUM", /* 0x53 */ - "TRIE", /* 0x54 */ - "TRIEC", /* 0x55 */ - "AHOCORASICK", /* 0x56 */ - "AHOCORASICKC", /* 0x57 */ - "GOSUB", /* 0x58 */ - "NGROUPP", /* 0x59 */ - "INSUBP", /* 0x5a */ - "DEFINEP", /* 0x5b */ - "ENDLIKE", /* 0x5c */ - "OPFAIL", /* 0x5d */ - "ACCEPT", /* 0x5e */ - "VERB", /* 0x5f */ - "PRUNE", /* 0x60 */ - "MARKPOINT", /* 0x61 */ - "SKIP", /* 0x62 */ - "COMMIT", /* 0x63 */ - "CUTGROUP", /* 0x64 */ - "KEEPS", /* 0x65 */ - "LNBREAK", /* 0x66 */ - "OPTIMIZED", /* 0x67 */ - "PSEUDO", /* 0x68 */ + "ANYOFH", /* 0x16 */ + "ANYOFHb", /* 0x17 */ + "ANYOFHr", /* 0x18 */ + "ANYOFHs", /* 0x19 */ + "ANYOFR", /* 0x1a */ + "ANYOFRb", /* 0x1b */ + "ANYOFHbbm", /* 0x1c */ + "ANYOFM", /* 0x1d */ + "NANYOFM", /* 0x1e */ + "POSIXD", /* 0x1f */ + "POSIXL", /* 0x20 */ + "POSIXU", /* 0x21 */ + "POSIXA", /* 0x22 */ + "NPOSIXD", /* 0x23 */ + "NPOSIXL", /* 0x24 */ + "NPOSIXU", /* 0x25 */ + "NPOSIXA", /* 0x26 */ + "CLUMP", /* 0x27 */ + "BRANCH", /* 0x28 */ + "EXACT", /* 0x29 */ + "LEXACT", /* 0x2a */ + "EXACTL", /* 0x2b */ + "EXACTF", /* 0x2c */ + "EXACTFL", /* 0x2d */ + "EXACTFU", /* 0x2e */ + "EXACTFAA", /* 0x2f */ + "EXACTFAA_NO_TRIE", /* 0x30 */ + "EXACTFUP", /* 0x31 */ + "EXACTFLU8", /* 0x32 */ + "EXACT_REQ8", /* 0x33 */ + "LEXACT_REQ8", /* 0x34 */ + "EXACTFU_REQ8", /* 0x35 */ + "EXACTFU_S_EDGE", /* 0x36 */ + "LNBREAK", /* 0x37 */ + "TRIE", /* 0x38 */ + "TRIEC", /* 0x39 */ + "AHOCORASICK", /* 0x3a */ + "AHOCORASICKC", /* 0x3b */ + "NOTHING", /* 0x3c */ + "TAIL", /* 0x3d */ + "STAR", /* 0x3e */ + "PLUS", /* 0x3f */ + "CURLY", /* 0x40 */ + "CURLYN", /* 0x41 */ + "CURLYM", /* 0x42 */ + "CURLYX", /* 0x43 */ + "WHILEM", /* 0x44 */ + "OPEN", /* 0x45 */ + "CLOSE", /* 0x46 */ + "SROPEN", /* 0x47 */ + "SRCLOSE", /* 0x48 */ + "REF", /* 0x49 */ + "REFF", /* 0x4a */ + "REFFL", /* 0x4b */ + "REFFU", /* 0x4c */ + "REFFA", /* 0x4d */ + "REFN", /* 0x4e */ + "REFFN", /* 0x4f */ + "REFFLN", /* 0x50 */ + "REFFUN", /* 0x51 */ + "REFFAN", /* 0x52 */ + "LONGJMP", /* 0x53 */ + "BRANCHJ", /* 0x54 */ + "IFMATCH", /* 0x55 */ + "UNLESSM", /* 0x56 */ + "SUSPEND", /* 0x57 */ + "IFTHEN", /* 0x58 */ + "GROUPP", /* 0x59 */ + "EVAL", /* 0x5a */ + "MINMOD", /* 0x5b */ + "LOGICAL", /* 0x5c */ + "RENUM", /* 0x5d */ + "GOSUB", /* 0x5e */ + "GROUPPN", /* 0x5f */ + "INSUBP", /* 0x60 */ + "DEFINEP", /* 0x61 */ + "ENDLIKE", /* 0x62 */ + "OPFAIL", /* 0x63 */ + "ACCEPT", /* 0x64 */ + "VERB", /* 0x65 */ + "PRUNE", /* 0x66 */ + "MARKPOINT", /* 0x67 */ + "SKIP", /* 0x68 */ + "COMMIT", /* 0x69 */ + "CUTGROUP", /* 0x6a */ + "KEEPS", /* 0x6b */ + "LOOKBEHIND_END", /* 0x6c */ + "OPTIMIZED", /* 0x6d */ + "PSEUDO", /* 0x6e */ + "REGEX_SET", /* 0x6f */ /* ------------ States ------------- */ "TRIE_next", /* REGNODE_MAX +0x01 */ "TRIE_next_fail", /* REGNODE_MAX +0x02 */ @@ -690,6 +1749,1096 @@ EXTCONST char * const PL_reg_name[] = { "CUTGROUP_next_fail", /* REGNODE_MAX +0x26 */ "KEEPS_next", /* REGNODE_MAX +0x27 */ "KEEPS_next_fail", /* REGNODE_MAX +0x28 */ + "REF_next", /* REGNODE_MAX +0x29 */ + "REF_next_fail", /* REGNODE_MAX +0x2a */ +}; +#endif /* DOINIT */ + + +/* PL_regnode_info[] - Opcode/state names in string form, for debugging */ + +#ifndef DOINIT +EXTCONST struct regnode_meta PL_regnode_info[]; +#else +EXTCONST struct regnode_meta PL_regnode_info[] = { + { + /* #0 op END */ + .type = END, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #1 op SUCCEED */ + .type = END, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #2 op SBOL */ + .type = BOL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #3 op MBOL */ + .type = BOL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #4 op SEOL */ + .type = EOL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #5 op MEOL */ + .type = EOL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #6 op EOS */ + .type = EOL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #7 op GPOS */ + .type = GPOS, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #8 op BOUND */ + .type = BOUND, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #9 op BOUNDL */ + .type = BOUND, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #10 op BOUNDU */ + .type = BOUND, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #11 op BOUNDA */ + .type = BOUND, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #12 op NBOUND */ + .type = NBOUND, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #13 op NBOUNDL */ + .type = NBOUND, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #14 op NBOUNDU */ + .type = NBOUND, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #15 op NBOUNDA */ + .type = NBOUND, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #16 op REG_ANY */ + .type = REG_ANY, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #17 op SANY */ + .type = REG_ANY, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #18 op ANYOF */ + .type = ANYOF, + .arg_len = EXTRA_SIZE(tregnode_ANYOF), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #19 op ANYOFD */ + .type = ANYOF, + .arg_len = EXTRA_SIZE(tregnode_ANYOFD), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #20 op ANYOFL */ + .type = ANYOF, + .arg_len = EXTRA_SIZE(tregnode_ANYOFL), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #21 op ANYOFPOSIXL */ + .type = ANYOF, + .arg_len = EXTRA_SIZE(tregnode_ANYOFPOSIXL), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #22 op ANYOFH */ + .type = ANYOFH, + .arg_len = EXTRA_SIZE(tregnode_ANYOFH), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #23 op ANYOFHb */ + .type = ANYOFH, + .arg_len = EXTRA_SIZE(tregnode_ANYOFHb), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #24 op ANYOFHr */ + .type = ANYOFH, + .arg_len = EXTRA_SIZE(tregnode_ANYOFHr), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #25 op ANYOFHs */ + .type = ANYOFH, + .arg_len = EXTRA_SIZE(tregnode_ANYOFHs), + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #26 op ANYOFR */ + .type = ANYOFR, + .arg_len = EXTRA_SIZE(tregnode_ANYOFR), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #27 op ANYOFRb */ + .type = ANYOFR, + .arg_len = EXTRA_SIZE(tregnode_ANYOFRb), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #28 op ANYOFHbbm */ + .type = ANYOFHbbm, + .arg_len = EXTRA_SIZE(tregnode_ANYOFHbbm), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #29 op ANYOFM */ + .type = ANYOFM, + .arg_len = EXTRA_SIZE(tregnode_ANYOFM), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #30 op NANYOFM */ + .type = ANYOFM, + .arg_len = EXTRA_SIZE(tregnode_NANYOFM), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #31 op POSIXD */ + .type = POSIXD, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #32 op POSIXL */ + .type = POSIXD, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #33 op POSIXU */ + .type = POSIXD, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #34 op POSIXA */ + .type = POSIXD, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #35 op NPOSIXD */ + .type = NPOSIXD, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #36 op NPOSIXL */ + .type = NPOSIXD, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #37 op NPOSIXU */ + .type = NPOSIXD, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #38 op NPOSIXA */ + .type = NPOSIXD, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #39 op CLUMP */ + .type = CLUMP, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #40 op BRANCH */ + .type = BRANCH, + .arg_len = EXTRA_SIZE(tregnode_BRANCH), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #41 op EXACT */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #42 op LEXACT */ + .type = EXACT, + .arg_len = EXTRA_SIZE(tregnode_LEXACT), + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #43 op EXACTL */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #44 op EXACTF */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #45 op EXACTFL */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #46 op EXACTFU */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #47 op EXACTFAA */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #48 op EXACTFAA_NO_TRIE */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #49 op EXACTFUP */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #50 op EXACTFLU8 */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #51 op EXACT_REQ8 */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #52 op LEXACT_REQ8 */ + .type = EXACT, + .arg_len = EXTRA_SIZE(tregnode_LEXACT_REQ8), + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #53 op EXACTFU_REQ8 */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #54 op EXACTFU_S_EDGE */ + .type = EXACT, + .arg_len = 0, + .arg_len_varies = 1, + .off_by_arg = 0 + }, + { + /* #55 op LNBREAK */ + .type = LNBREAK, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #56 op TRIE */ + .type = TRIE, + .arg_len = EXTRA_SIZE(tregnode_TRIE), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #57 op TRIEC */ + .type = TRIE, + .arg_len = EXTRA_SIZE(tregnode_TRIEC), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #58 op AHOCORASICK */ + .type = TRIE, + .arg_len = EXTRA_SIZE(tregnode_AHOCORASICK), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #59 op AHOCORASICKC */ + .type = TRIE, + .arg_len = EXTRA_SIZE(tregnode_AHOCORASICKC), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #60 op NOTHING */ + .type = NOTHING, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #61 op TAIL */ + .type = NOTHING, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #62 op STAR */ + .type = STAR, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #63 op PLUS */ + .type = PLUS, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #64 op CURLY */ + .type = CURLY, + .arg_len = EXTRA_SIZE(tregnode_CURLY), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #65 op CURLYN */ + .type = CURLY, + .arg_len = EXTRA_SIZE(tregnode_CURLYN), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #66 op CURLYM */ + .type = CURLY, + .arg_len = EXTRA_SIZE(tregnode_CURLYM), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #67 op CURLYX */ + .type = CURLY, + .arg_len = EXTRA_SIZE(tregnode_CURLYX), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #68 op WHILEM */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #69 op OPEN */ + .type = OPEN, + .arg_len = EXTRA_SIZE(tregnode_OPEN), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #70 op CLOSE */ + .type = CLOSE, + .arg_len = EXTRA_SIZE(tregnode_CLOSE), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #71 op SROPEN */ + .type = SROPEN, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #72 op SRCLOSE */ + .type = SRCLOSE, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #73 op REF */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REF), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #74 op REFF */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REFF), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #75 op REFFL */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REFFL), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #76 op REFFU */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REFFU), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #77 op REFFA */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REFFA), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #78 op REFN */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REFN), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #79 op REFFN */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REFFN), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #80 op REFFLN */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REFFLN), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #81 op REFFUN */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REFFUN), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #82 op REFFAN */ + .type = REF, + .arg_len = EXTRA_SIZE(tregnode_REFFAN), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #83 op LONGJMP */ + .type = LONGJMP, + .arg_len = EXTRA_SIZE(tregnode_LONGJMP), + .arg_len_varies = 0, + .off_by_arg = 1 + }, + { + /* #84 op BRANCHJ */ + .type = BRANCHJ, + .arg_len = EXTRA_SIZE(tregnode_BRANCHJ), + .arg_len_varies = 0, + .off_by_arg = 1 + }, + { + /* #85 op IFMATCH */ + .type = BRANCHJ, + .arg_len = EXTRA_SIZE(tregnode_IFMATCH), + .arg_len_varies = 0, + .off_by_arg = 1 + }, + { + /* #86 op UNLESSM */ + .type = BRANCHJ, + .arg_len = EXTRA_SIZE(tregnode_UNLESSM), + .arg_len_varies = 0, + .off_by_arg = 1 + }, + { + /* #87 op SUSPEND */ + .type = BRANCHJ, + .arg_len = EXTRA_SIZE(tregnode_SUSPEND), + .arg_len_varies = 0, + .off_by_arg = 1 + }, + { + /* #88 op IFTHEN */ + .type = BRANCHJ, + .arg_len = EXTRA_SIZE(tregnode_IFTHEN), + .arg_len_varies = 0, + .off_by_arg = 1 + }, + { + /* #89 op GROUPP */ + .type = GROUPP, + .arg_len = EXTRA_SIZE(tregnode_GROUPP), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #90 op EVAL */ + .type = EVAL, + .arg_len = EXTRA_SIZE(tregnode_EVAL), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #91 op MINMOD */ + .type = MINMOD, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #92 op LOGICAL */ + .type = LOGICAL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #93 op RENUM */ + .type = BRANCHJ, + .arg_len = EXTRA_SIZE(tregnode_RENUM), + .arg_len_varies = 0, + .off_by_arg = 1 + }, + { + /* #94 op GOSUB */ + .type = GOSUB, + .arg_len = EXTRA_SIZE(tregnode_GOSUB), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #95 op GROUPPN */ + .type = GROUPPN, + .arg_len = EXTRA_SIZE(tregnode_GROUPPN), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #96 op INSUBP */ + .type = INSUBP, + .arg_len = EXTRA_SIZE(tregnode_INSUBP), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #97 op DEFINEP */ + .type = DEFINEP, + .arg_len = EXTRA_SIZE(tregnode_DEFINEP), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #98 op ENDLIKE */ + .type = ENDLIKE, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #99 op OPFAIL */ + .type = ENDLIKE, + .arg_len = EXTRA_SIZE(tregnode_OPFAIL), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #100 op ACCEPT */ + .type = ENDLIKE, + .arg_len = EXTRA_SIZE(tregnode_ACCEPT), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #101 op VERB */ + .type = VERB, + .arg_len = EXTRA_SIZE(tregnode_VERB), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #102 op PRUNE */ + .type = VERB, + .arg_len = EXTRA_SIZE(tregnode_PRUNE), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #103 op MARKPOINT */ + .type = VERB, + .arg_len = EXTRA_SIZE(tregnode_MARKPOINT), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #104 op SKIP */ + .type = VERB, + .arg_len = EXTRA_SIZE(tregnode_SKIP), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #105 op COMMIT */ + .type = VERB, + .arg_len = EXTRA_SIZE(tregnode_COMMIT), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #106 op CUTGROUP */ + .type = VERB, + .arg_len = EXTRA_SIZE(tregnode_CUTGROUP), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #107 op KEEPS */ + .type = KEEPS, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #108 op LOOKBEHIND_END */ + .type = END, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #109 op OPTIMIZED */ + .type = NOTHING, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #110 op PSEUDO */ + .type = PSEUDO, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #111 op REGEX_SET */ + .type = REGEX_SET, + .arg_len = EXTRA_SIZE(tregnode_REGEX_SET), + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #112 state TRIE_next */ + .type = TRIE, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #113 state TRIE_next_fail */ + .type = TRIE, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #114 state EVAL_B */ + .type = EVAL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #115 state EVAL_B_fail */ + .type = EVAL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #116 state EVAL_postponed_AB */ + .type = EVAL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #117 state EVAL_postponed_AB_fail */ + .type = EVAL, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #118 state CURLYX_end */ + .type = CURLYX, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #119 state CURLYX_end_fail */ + .type = CURLYX, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #120 state WHILEM_A_pre */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #121 state WHILEM_A_pre_fail */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #122 state WHILEM_A_min */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #123 state WHILEM_A_min_fail */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #124 state WHILEM_A_max */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #125 state WHILEM_A_max_fail */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #126 state WHILEM_B_min */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #127 state WHILEM_B_min_fail */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #128 state WHILEM_B_max */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #129 state WHILEM_B_max_fail */ + .type = WHILEM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #130 state BRANCH_next */ + .type = BRANCH, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #131 state BRANCH_next_fail */ + .type = BRANCH, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #132 state CURLYM_A */ + .type = CURLYM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #133 state CURLYM_A_fail */ + .type = CURLYM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #134 state CURLYM_B */ + .type = CURLYM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #135 state CURLYM_B_fail */ + .type = CURLYM, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #136 state IFMATCH_A */ + .type = IFMATCH, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #137 state IFMATCH_A_fail */ + .type = IFMATCH, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #138 state CURLY_B_min */ + .type = CURLY, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #139 state CURLY_B_min_fail */ + .type = CURLY, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #140 state CURLY_B_max */ + .type = CURLY, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #141 state CURLY_B_max_fail */ + .type = CURLY, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #142 state COMMIT_next */ + .type = COMMIT, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #143 state COMMIT_next_fail */ + .type = COMMIT, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #144 state MARKPOINT_next */ + .type = MARKPOINT, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #145 state MARKPOINT_next_fail */ + .type = MARKPOINT, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #146 state SKIP_next */ + .type = SKIP, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #147 state SKIP_next_fail */ + .type = SKIP, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #148 state CUTGROUP_next */ + .type = CUTGROUP, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #149 state CUTGROUP_next_fail */ + .type = CUTGROUP, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #150 state KEEPS_next */ + .type = KEEPS, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #151 state KEEPS_next_fail */ + .type = KEEPS, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #152 state REF_next */ + .type = REF, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + }, + { + /* #153 state REF_next_fail */ + .type = REF, + .arg_len = 0, + .arg_len_varies = 0, + .off_by_arg = 0 + } }; #endif /* DOINIT */ @@ -745,24 +2894,26 @@ EXTCONST char * const PL_reg_extflags_name[] = { EXTCONST char * PL_reg_intflags_name[]; #else EXTCONST char * const PL_reg_intflags_name[] = { - "SKIP", /* 0x00000001 - PREGf_SKIP */ - "IMPLICIT", /* 0x00000002 - PREGf_IMPLICIT - Converted .* to ^.* */ - "NAUGHTY", /* 0x00000004 - PREGf_NAUGHTY - how exponential is this pattern? */ - "VERBARG_SEEN", /* 0x00000008 - PREGf_VERBARG_SEEN */ - "CUTGROUP_SEEN", /* 0x00000010 - PREGf_CUTGROUP_SEEN */ - "USE_RE_EVAL", /* 0x00000020 - PREGf_USE_RE_EVAL - compiled with "use re 'eval'" */ - "NOSCAN", /* 0x00000040 - PREGf_NOSCAN */ - "GPOS_SEEN", /* 0x00000100 - PREGf_GPOS_SEEN */ - "GPOS_FLOAT", /* 0x00000200 - PREGf_GPOS_FLOAT */ - "ANCH_MBOL", /* 0x00000400 - PREGf_ANCH_MBOL */ - "ANCH_SBOL", /* 0x00000800 - PREGf_ANCH_SBOL */ - "ANCH_GPOS", /* 0x00001000 - PREGf_ANCH_GPOS */ - "RECURSE_SEEN", /* 0x00002000 - PREGf_RECURSE_SEEN */ + "SKIP", /* (1<< 0) - 0x00000001 - PREGf_SKIP */ + "IMPLICIT", /* (1<< 1) - 0x00000002 - PREGf_IMPLICIT - Converted .* to ^.* */ + "NAUGHTY", /* (1<< 2) - 0x00000004 - PREGf_NAUGHTY - how exponential is this pattern? */ + "VERBARG_SEEN", /* (1<< 3) - 0x00000008 - PREGf_VERBARG_SEEN */ + "CUTGROUP_SEEN", /* (1<< 4) - 0x00000010 - PREGf_CUTGROUP_SEEN */ + "USE_RE_EVAL", /* (1<< 5) - 0x00000020 - PREGf_USE_RE_EVAL - compiled with "use re 'eval'" */ + "NOSCAN", /* (1<< 6) - 0x00000040 - PREGf_NOSCAN */ + "", /* (1<< 7) - 0x00000080 - *UNUSED* */ + "GPOS_SEEN", /* (1<< 8) - 0x00000100 - PREGf_GPOS_SEEN */ + "GPOS_FLOAT", /* (1<< 9) - 0x00000200 - PREGf_GPOS_FLOAT */ + "ANCH_MBOL", /* (1<<10) - 0x00000400 - PREGf_ANCH_MBOL */ + "ANCH_SBOL", /* (1<<11) - 0x00000800 - PREGf_ANCH_SBOL */ + "ANCH_GPOS", /* (1<<12) - 0x00001000 - PREGf_ANCH_GPOS */ + "RECURSE_SEEN", /* (1<<13) - 0x00002000 - PREGf_RECURSE_SEEN */ + "PESSIMIZE_SEEN", /* (1<<14) - 0x00004000 - PREGf_PESSIMIZE_SEEN */ }; #endif /* DOINIT */ #ifdef DEBUGGING -# define REG_INTFLAGS_NAME_SIZE 13 +# define REG_INTFLAGS_NAME_SIZE 15 #endif /* The following have no fixed length. U8 so we can do strchr() on it. */ @@ -773,7 +2924,7 @@ EXTCONST U8 PL_varies[] __attribute__deprecated__; #else EXTCONST U8 PL_varies[] __attribute__deprecated__ = { CLUMP, BRANCH, STAR, PLUS, CURLY, CURLYN, CURLYM, CURLYX, WHILEM, REF, - REFF, REFFL, REFFU, REFFA, NREF, NREFF, NREFFL, NREFFU, NREFFA, + REFF, REFFL, REFFU, REFFA, REFN, REFFN, REFFLN, REFFUN, REFFAN, BRANCHJ, SUSPEND, IFTHEN, 0 }; @@ -783,7 +2934,7 @@ EXTCONST U8 PL_varies[] __attribute__deprecated__ = { EXTCONST U8 PL_varies_bitmask[]; #else EXTCONST U8 PL_varies_bitmask[] = { - 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xF0, 0x87, 0xFF, 0x65, 0x00, 0x00, 0x00, 0x00 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xC0, 0x1F, 0xFE, 0x97, 0x01, 0x00, 0x00 }; #endif /* DOINIT */ @@ -795,9 +2946,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, ANYOFHb, + ANYOFHr, ANYOFHs, ANYOFR, ANYOFRb, ANYOFHbbm, ANYOFM, NANYOFM, POSIXD, + POSIXL, POSIXU, POSIXA, NPOSIXD, NPOSIXL, NPOSIXU, NPOSIXA, REGEX_SET, 0 }; #endif /* DOINIT */ @@ -806,8 +2957,24 @@ 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, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }; #endif /* DOINIT */ -/* ex: set ro: */ +/* Is 'op', known to be of type EXACT, folding? */ +#define isEXACTFish(op) (__ASSERT_(REGNODE_TYPE(op) == EXACT) (PL_EXACTFish_bitmask & (1U << (op - EXACT)))) + +/* Do only UTF-8 target strings match 'op', known to be of type EXACT? */ +#define isEXACT_REQ8(op) (__ASSERT_(REGNODE_TYPE(op) == EXACT) (PL_EXACT_REQ8_bitmask & (1U << (op - EXACT)))) + +#ifndef DOINIT +EXTCONST U32 PL_EXACTFish_bitmask; +EXTCONST U32 PL_EXACT_REQ8_bitmask; +#else +EXTCONST U32 PL_EXACTFish_bitmask = 0x33F8; +EXTCONST U32 PL_EXACT_REQ8_bitmask = 0x1E00; +#endif /* DOINIT */ + +#endif /* defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) */ + +/* ex: set ro ft=c: */