This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Promote v5.36 usage and feature bundles doc
[perl5.git] / regnodes.h
1 /* -*- buffer-read-only: t -*-
2    !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
3    This file is built by regen/regcomp.pl from regcomp.sym.
4    Any changes made here will be lost!
5  */
6
7 #if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD)
8
9
10 /* typedefs for regex nodes - one typedef per node type */
11
12 typedef struct regnode_2L                        tregnode_ACCEPT;
13 typedef struct regnode_1                         tregnode_AHOCORASICK;
14 typedef struct regnode_charclass                 tregnode_AHOCORASICKC;
15 typedef struct regnode_charclass                 tregnode_ANYOF;
16 typedef struct regnode_charclass                 tregnode_ANYOFD;
17 typedef struct regnode_1                         tregnode_ANYOFH;
18 typedef struct regnode_1                         tregnode_ANYOFHb;
19 typedef struct regnode_bbm                       tregnode_ANYOFHbbm;
20 typedef struct regnode_1                         tregnode_ANYOFHr;
21 typedef struct regnode_1                         tregnode_ANYOFHs;
22 typedef struct regnode_charclass                 tregnode_ANYOFL;
23 typedef struct regnode_1                         tregnode_ANYOFM;
24 typedef struct regnode_charclass_posixl          tregnode_ANYOFPOSIXL;
25 typedef struct regnode_1                         tregnode_ANYOFR;
26 typedef struct regnode_1                         tregnode_ANYOFRb;
27 typedef struct regnode                           tregnode_BOUND;
28 typedef struct regnode                           tregnode_BOUNDA;
29 typedef struct regnode                           tregnode_BOUNDL;
30 typedef struct regnode                           tregnode_BOUNDU;
31 typedef struct regnode                           tregnode_BRANCH;
32 typedef struct regnode_1                         tregnode_BRANCHJ;
33 typedef struct regnode_1                         tregnode_CLOSE;
34 typedef struct regnode                           tregnode_CLUMP;
35 typedef struct regnode_1                         tregnode_COMMIT;
36 typedef struct regnode_2                         tregnode_CURLY;
37 typedef struct regnode_2                         tregnode_CURLYM;
38 typedef struct regnode_2                         tregnode_CURLYN;
39 typedef struct regnode_2                         tregnode_CURLYX;
40 typedef struct regnode_1                         tregnode_CUTGROUP;
41 typedef struct regnode_1                         tregnode_DEFINEP;
42 typedef struct regnode                           tregnode_END;
43 typedef struct regnode                           tregnode_ENDLIKE;
44 typedef struct regnode                           tregnode_EOS;
45 typedef struct regnode_2L                        tregnode_EVAL;
46 typedef struct regnode                           tregnode_EXACT;
47 typedef struct regnode                           tregnode_EXACTF;
48 typedef struct regnode                           tregnode_EXACTFAA;
49 typedef struct regnode                           tregnode_EXACTFAA_NO_TRIE;
50 typedef struct regnode                           tregnode_EXACTFL;
51 typedef struct regnode                           tregnode_EXACTFLU8;
52 typedef struct regnode                           tregnode_EXACTFU;
53 typedef struct regnode                           tregnode_EXACTFUP;
54 typedef struct regnode                           tregnode_EXACTFU_REQ8;
55 typedef struct regnode                           tregnode_EXACTFU_S_EDGE;
56 typedef struct regnode                           tregnode_EXACTL;
57 typedef struct regnode                           tregnode_EXACT_REQ8;
58 typedef struct regnode_2L                        tregnode_GOSUB;
59 typedef struct regnode                           tregnode_GPOS;
60 typedef struct regnode_1                         tregnode_GROUPP;
61 typedef struct regnode_1                         tregnode_GROUPPN;
62 typedef struct regnode_1                         tregnode_IFMATCH;
63 typedef struct regnode_1                         tregnode_IFTHEN;
64 typedef struct regnode_1                         tregnode_INSUBP;
65 typedef struct regnode                           tregnode_KEEPS;
66 typedef struct regnode_1                         tregnode_LEXACT;
67 typedef struct regnode_1                         tregnode_LEXACT_REQ8;
68 typedef struct regnode                           tregnode_LNBREAK;
69 typedef struct regnode                           tregnode_LOGICAL;
70 typedef struct regnode_1                         tregnode_LONGJMP;
71 typedef struct regnode                           tregnode_LOOKBEHIND_END;
72 typedef struct regnode_1                         tregnode_MARKPOINT;
73 typedef struct regnode                           tregnode_MBOL;
74 typedef struct regnode                           tregnode_MEOL;
75 typedef struct regnode                           tregnode_MINMOD;
76 typedef struct regnode_1                         tregnode_NANYOFM;
77 typedef struct regnode                           tregnode_NBOUND;
78 typedef struct regnode                           tregnode_NBOUNDA;
79 typedef struct regnode                           tregnode_NBOUNDL;
80 typedef struct regnode                           tregnode_NBOUNDU;
81 typedef struct regnode                           tregnode_NOTHING;
82 typedef struct regnode                           tregnode_NPOSIXA;
83 typedef struct regnode                           tregnode_NPOSIXD;
84 typedef struct regnode                           tregnode_NPOSIXL;
85 typedef struct regnode                           tregnode_NPOSIXU;
86 typedef struct regnode_1                         tregnode_OPEN;
87 typedef struct regnode_1                         tregnode_OPFAIL;
88 typedef struct regnode                           tregnode_OPTIMIZED;
89 typedef struct regnode                           tregnode_PLUS;
90 typedef struct regnode                           tregnode_POSIXA;
91 typedef struct regnode                           tregnode_POSIXD;
92 typedef struct regnode                           tregnode_POSIXL;
93 typedef struct regnode                           tregnode_POSIXU;
94 typedef struct regnode_1                         tregnode_PRUNE;
95 typedef struct regnode                           tregnode_PSEUDO;
96 typedef struct regnode_1                         tregnode_REF;
97 typedef struct regnode_1                         tregnode_REFF;
98 typedef struct regnode_1                         tregnode_REFFA;
99 typedef struct regnode_1                         tregnode_REFFAN;
100 typedef struct regnode_1                         tregnode_REFFL;
101 typedef struct regnode_1                         tregnode_REFFLN;
102 typedef struct regnode_1                         tregnode_REFFN;
103 typedef struct regnode_1                         tregnode_REFFU;
104 typedef struct regnode_1                         tregnode_REFFUN;
105 typedef struct regnode_1                         tregnode_REFN;
106 typedef struct regnode_p                         tregnode_REGEX_SET;
107 typedef struct regnode                           tregnode_REG_ANY;
108 typedef struct regnode_1                         tregnode_RENUM;
109 typedef struct regnode                           tregnode_SANY;
110 typedef struct regnode                           tregnode_SBOL;
111 typedef struct regnode                           tregnode_SEOL;
112 typedef struct regnode_1                         tregnode_SKIP;
113 typedef struct regnode                           tregnode_SRCLOSE;
114 typedef struct regnode                           tregnode_SROPEN;
115 typedef struct regnode                           tregnode_STAR;
116 typedef struct regnode                           tregnode_SUCCEED;
117 typedef struct regnode_1                         tregnode_SUSPEND;
118 typedef struct regnode                           tregnode_TAIL;
119 typedef struct regnode_1                         tregnode_TRIE;
120 typedef struct regnode_charclass                 tregnode_TRIEC;
121 typedef struct regnode_1                         tregnode_UNLESSM;
122 typedef struct regnode_1                         tregnode_VERB;
123 typedef struct regnode                           tregnode_WHILEM;
124
125 /* end typedefs */
126
127 /* Regops and State definitions */
128
129 #define REGNODE_MAX             111
130 #define REGMATCH_STATE_MAX      151
131
132 /* -- For regexec.c to switch on target being utf8 (t8) or not (tb, b='byte'); */
133 #define with_t_UTF8ness(op, t_utf8) (((op) << 1) + (cBOOL(t_utf8)))
134 /* -- same, but also with pattern (p8, pb) -- */
135 #define with_tp_UTF8ness(op, t_utf8, p_utf8)                        \
136                 (((op) << 2) + (cBOOL(t_utf8) << 1) + cBOOL(p_utf8))
137
138 /* The #defines below give both the basic regnode and the expanded version for
139    switching on utf8ness */
140 #define END                           0        /* 0x00 End of program. */
141 #define END_tb                           0     /*      0x000 */
142 #define END_t8                           1     /*      0x001 */
143 #define END_tb_pb                           0  /*      0x000 */
144 #define END_tb_p8                           1  /*      0x001 */
145 #define END_t8_pb                           2  /*      0x002 */
146 #define END_t8_p8                           3  /*      0x003 */
147
148 #define SUCCEED                       1        /* 0x01 Return from a
149                                                   subroutine, basically. */
150 #define SUCCEED_tb                       2     /*      0x002 */
151 #define SUCCEED_t8                       3     /*      0x003 */
152 #define SUCCEED_tb_pb                       4  /*      0x004 */
153 #define SUCCEED_tb_p8                       5  /*      0x005 */
154 #define SUCCEED_t8_pb                       6  /*      0x006 */
155 #define SUCCEED_t8_p8                       7  /*      0x007 */
156
157 #define SBOL                          2        /* 0x02 Match "" at beginning
158                                                   of line: /^/, /\A/ */
159 #define SBOL_tb                          4     /*      0x004 */
160 #define SBOL_t8                          5     /*      0x005 */
161 #define SBOL_tb_pb                          8  /*      0x008 */
162 #define SBOL_tb_p8                          9  /*      0x009 */
163 #define SBOL_t8_pb                         10  /*      0x00a */
164 #define SBOL_t8_p8                         11  /*      0x00b */
165
166 #define BOL                           2        /* 0x02 Match "" at beginning
167                                                   of line: /^/, /\A/ */
168 #define BOL_tb                           4     /*      0x004 */
169 #define BOL_t8                           5     /*      0x005 */
170 #define BOL_tb_pb                           8  /*      0x008 */
171 #define BOL_tb_p8                           9  /*      0x009 */
172 #define BOL_t8_pb                          10  /*      0x00a */
173 #define BOL_t8_p8                          11  /*      0x00b */
174
175 #define MBOL                          3        /* 0x03 Same, assuming
176                                                   multiline: /^/m */
177 #define MBOL_tb                          6     /*      0x006 */
178 #define MBOL_t8                          7     /*      0x007 */
179 #define MBOL_tb_pb                         12  /*      0x00c */
180 #define MBOL_tb_p8                         13  /*      0x00d */
181 #define MBOL_t8_pb                         14  /*      0x00e */
182 #define MBOL_t8_p8                         15  /*      0x00f */
183
184 #define SEOL                          4        /* 0x04 Match "" at end of
185                                                   line: /$/ */
186 #define SEOL_tb                          8     /*      0x008 */
187 #define SEOL_t8                          9     /*      0x009 */
188 #define SEOL_tb_pb                         16  /*      0x010 */
189 #define SEOL_tb_p8                         17  /*      0x011 */
190 #define SEOL_t8_pb                         18  /*      0x012 */
191 #define SEOL_t8_p8                         19  /*      0x013 */
192
193 #define EOL                           4        /* 0x04 Match "" at end of
194                                                   line: /$/ */
195 #define EOL_tb                           8     /*      0x008 */
196 #define EOL_t8                           9     /*      0x009 */
197 #define EOL_tb_pb                          16  /*      0x010 */
198 #define EOL_tb_p8                          17  /*      0x011 */
199 #define EOL_t8_pb                          18  /*      0x012 */
200 #define EOL_t8_p8                          19  /*      0x013 */
201
202 #define MEOL                          5        /* 0x05 Same, assuming
203                                                   multiline: /$/m */
204 #define MEOL_tb                         10     /*      0x00a */
205 #define MEOL_t8                         11     /*      0x00b */
206 #define MEOL_tb_pb                         20  /*      0x014 */
207 #define MEOL_tb_p8                         21  /*      0x015 */
208 #define MEOL_t8_pb                         22  /*      0x016 */
209 #define MEOL_t8_p8                         23  /*      0x017 */
210
211 #define EOS                           6        /* 0x06 Match "" at end of
212                                                   string: /\z/ */
213 #define EOS_tb                          12     /*      0x00c */
214 #define EOS_t8                          13     /*      0x00d */
215 #define EOS_tb_pb                          24  /*      0x018 */
216 #define EOS_tb_p8                          25  /*      0x019 */
217 #define EOS_t8_pb                          26  /*      0x01a */
218 #define EOS_t8_p8                          27  /*      0x01b */
219
220 #define GPOS                          7        /* 0x07 Matches where last m//g
221                                                   left off. */
222 #define GPOS_tb                         14     /*      0x00e */
223 #define GPOS_t8                         15     /*      0x00f */
224 #define GPOS_tb_pb                         28  /*      0x01c */
225 #define GPOS_tb_p8                         29  /*      0x01d */
226 #define GPOS_t8_pb                         30  /*      0x01e */
227 #define GPOS_t8_p8                         31  /*      0x01f */
228
229 #define BOUND                         8        /* 0x08 Like BOUNDA for
230                                                   non-utf8, otherwise like
231                                                   BOUNDU */
232 #define BOUND_tb                        16     /*      0x010 */
233 #define BOUND_t8                        17     /*      0x011 */
234 #define BOUND_tb_pb                        32  /*      0x020 */
235 #define BOUND_tb_p8                        33  /*      0x021 */
236 #define BOUND_t8_pb                        34  /*      0x022 */
237 #define BOUND_t8_p8                        35  /*      0x023 */
238
239 #define BOUNDL                        9        /* 0x09 Like BOUND/BOUNDU, but
240                                                   \w and \W are defined by
241                                                   current locale */
242 #define BOUNDL_tb                       18     /*      0x012 */
243 #define BOUNDL_t8                       19     /*      0x013 */
244 #define BOUNDL_tb_pb                       36  /*      0x024 */
245 #define BOUNDL_tb_p8                       37  /*      0x025 */
246 #define BOUNDL_t8_pb                       38  /*      0x026 */
247 #define BOUNDL_t8_p8                       39  /*      0x027 */
248
249 #define BOUNDU                       10        /* 0x0a Match "" at any
250                                                   boundary of a given type
251                                                   using /u rules. */
252 #define BOUNDU_tb                       20     /*      0x014 */
253 #define BOUNDU_t8                       21     /*      0x015 */
254 #define BOUNDU_tb_pb                       40  /*      0x028 */
255 #define BOUNDU_tb_p8                       41  /*      0x029 */
256 #define BOUNDU_t8_pb                       42  /*      0x02a */
257 #define BOUNDU_t8_p8                       43  /*      0x02b */
258
259 #define BOUNDA                       11        /* 0x0b Match "" at any
260                                                   boundary between \w\W or
261                                                   \W\w, where \w is
262                                                   [_a-zA-Z0-9] */
263 #define BOUNDA_tb                       22     /*      0x016 */
264 #define BOUNDA_t8                       23     /*      0x017 */
265 #define BOUNDA_tb_pb                       44  /*      0x02c */
266 #define BOUNDA_tb_p8                       45  /*      0x02d */
267 #define BOUNDA_t8_pb                       46  /*      0x02e */
268 #define BOUNDA_t8_p8                       47  /*      0x02f */
269
270 #define NBOUND                       12        /* 0x0c Like NBOUNDA for
271                                                   non-utf8, otherwise like
272                                                   BOUNDU */
273 #define NBOUND_tb                       24     /*      0x018 */
274 #define NBOUND_t8                       25     /*      0x019 */
275 #define NBOUND_tb_pb                       48  /*      0x030 */
276 #define NBOUND_tb_p8                       49  /*      0x031 */
277 #define NBOUND_t8_pb                       50  /*      0x032 */
278 #define NBOUND_t8_p8                       51  /*      0x033 */
279
280 #define NBOUNDL                      13        /* 0x0d Like NBOUND/NBOUNDU,
281                                                   but \w and \W are defined by
282                                                   current locale */
283 #define NBOUNDL_tb                      26     /*      0x01a */
284 #define NBOUNDL_t8                      27     /*      0x01b */
285 #define NBOUNDL_tb_pb                      52  /*      0x034 */
286 #define NBOUNDL_tb_p8                      53  /*      0x035 */
287 #define NBOUNDL_t8_pb                      54  /*      0x036 */
288 #define NBOUNDL_t8_p8                      55  /*      0x037 */
289
290 #define NBOUNDU                      14        /* 0x0e Match "" at any
291                                                   non-boundary of a given type
292                                                   using using /u rules. */
293 #define NBOUNDU_tb                      28     /*      0x01c */
294 #define NBOUNDU_t8                      29     /*      0x01d */
295 #define NBOUNDU_tb_pb                      56  /*      0x038 */
296 #define NBOUNDU_tb_p8                      57  /*      0x039 */
297 #define NBOUNDU_t8_pb                      58  /*      0x03a */
298 #define NBOUNDU_t8_p8                      59  /*      0x03b */
299
300 #define NBOUNDA                      15        /* 0x0f Match "" betweeen any
301                                                   \w\w or \W\W, where \w is
302                                                   [_a-zA-Z0-9] */
303 #define NBOUNDA_tb                      30     /*      0x01e */
304 #define NBOUNDA_t8                      31     /*      0x01f */
305 #define NBOUNDA_tb_pb                      60  /*      0x03c */
306 #define NBOUNDA_tb_p8                      61  /*      0x03d */
307 #define NBOUNDA_t8_pb                      62  /*      0x03e */
308 #define NBOUNDA_t8_p8                      63  /*      0x03f */
309
310 #define REG_ANY                      16        /* 0x10 Match any one character
311                                                   (except newline). */
312 #define REG_ANY_tb                      32     /*      0x020 */
313 #define REG_ANY_t8                      33     /*      0x021 */
314 #define REG_ANY_tb_pb                      64  /*      0x040 */
315 #define REG_ANY_tb_p8                      65  /*      0x041 */
316 #define REG_ANY_t8_pb                      66  /*      0x042 */
317 #define REG_ANY_t8_p8                      67  /*      0x043 */
318
319 #define SANY                         17        /* 0x11 Match any one
320                                                   character. */
321 #define SANY_tb                         34     /*      0x022 */
322 #define SANY_t8                         35     /*      0x023 */
323 #define SANY_tb_pb                         68  /*      0x044 */
324 #define SANY_tb_p8                         69  /*      0x045 */
325 #define SANY_t8_pb                         70  /*      0x046 */
326 #define SANY_t8_p8                         71  /*      0x047 */
327
328 #define ANYOF                        18        /* 0x12 Match character in (or
329                                                   not in) this class, single
330                                                   char match only */
331 #define ANYOF_tb                        36     /*      0x024 */
332 #define ANYOF_t8                        37     /*      0x025 */
333 #define ANYOF_tb_pb                        72  /*      0x048 */
334 #define ANYOF_tb_p8                        73  /*      0x049 */
335 #define ANYOF_t8_pb                        74  /*      0x04a */
336 #define ANYOF_t8_p8                        75  /*      0x04b */
337
338 #define ANYOFD                       19        /* 0x13 Like ANYOF, but /d is
339                                                   in effect */
340 #define ANYOFD_tb                       38     /*      0x026 */
341 #define ANYOFD_t8                       39     /*      0x027 */
342 #define ANYOFD_tb_pb                       76  /*      0x04c */
343 #define ANYOFD_tb_p8                       77  /*      0x04d */
344 #define ANYOFD_t8_pb                       78  /*      0x04e */
345 #define ANYOFD_t8_p8                       79  /*      0x04f */
346
347 #define ANYOFL                       20        /* 0x14 Like ANYOF, but /l is
348                                                   in effect */
349 #define ANYOFL_tb                       40     /*      0x028 */
350 #define ANYOFL_t8                       41     /*      0x029 */
351 #define ANYOFL_tb_pb                       80  /*      0x050 */
352 #define ANYOFL_tb_p8                       81  /*      0x051 */
353 #define ANYOFL_t8_pb                       82  /*      0x052 */
354 #define ANYOFL_t8_p8                       83  /*      0x053 */
355
356 #define ANYOFPOSIXL                  21        /* 0x15 Like ANYOFL, but
357                                                   matches [[:posix:]] classes
358                                                */
359 #define ANYOFPOSIXL_tb                  42     /*      0x02a */
360 #define ANYOFPOSIXL_t8                  43     /*      0x02b */
361 #define ANYOFPOSIXL_tb_pb                  84  /*      0x054 */
362 #define ANYOFPOSIXL_tb_p8                  85  /*      0x055 */
363 #define ANYOFPOSIXL_t8_pb                  86  /*      0x056 */
364 #define ANYOFPOSIXL_t8_p8                  87  /*      0x057 */
365
366 #define ANYOFH                       22        /* 0x16 Like ANYOF, but only
367                                                   has "High" matches, none in
368                                                   the bitmap; the flags field
369                                                   contains the lowest
370                                                   matchable UTF-8 start byte
371                                                */
372 #define ANYOFH_tb                       44     /*      0x02c */
373 #define ANYOFH_t8                       45     /*      0x02d */
374 #define ANYOFH_tb_pb                       88  /*      0x058 */
375 #define ANYOFH_tb_p8                       89  /*      0x059 */
376 #define ANYOFH_t8_pb                       90  /*      0x05a */
377 #define ANYOFH_t8_p8                       91  /*      0x05b */
378
379 #define ANYOFHb                      23        /* 0x17 Like ANYOFH, but all
380                                                   matches share the same UTF-8
381                                                   start byte, given in the
382                                                   flags field */
383 #define ANYOFHb_tb                      46     /*      0x02e */
384 #define ANYOFHb_t8                      47     /*      0x02f */
385 #define ANYOFHb_tb_pb                      92  /*      0x05c */
386 #define ANYOFHb_tb_p8                      93  /*      0x05d */
387 #define ANYOFHb_t8_pb                      94  /*      0x05e */
388 #define ANYOFHb_t8_p8                      95  /*      0x05f */
389
390 #define ANYOFHr                      24        /* 0x18 Like ANYOFH, but the
391                                                   flags field contains packed
392                                                   bounds for all matchable
393                                                   UTF-8 start bytes. */
394 #define ANYOFHr_tb                      48     /*      0x030 */
395 #define ANYOFHr_t8                      49     /*      0x031 */
396 #define ANYOFHr_tb_pb                      96  /*      0x060 */
397 #define ANYOFHr_tb_p8                      97  /*      0x061 */
398 #define ANYOFHr_t8_pb                      98  /*      0x062 */
399 #define ANYOFHr_t8_p8                      99  /*      0x063 */
400
401 #define ANYOFHs                      25        /* 0x19 Like ANYOFHb, but has a
402                                                   string field that gives the
403                                                   leading matchable UTF-8
404                                                   bytes; flags field is len */
405 #define ANYOFHs_tb                      50     /*      0x032 */
406 #define ANYOFHs_t8                      51     /*      0x033 */
407 #define ANYOFHs_tb_pb                     100  /*      0x064 */
408 #define ANYOFHs_tb_p8                     101  /*      0x065 */
409 #define ANYOFHs_t8_pb                     102  /*      0x066 */
410 #define ANYOFHs_t8_p8                     103  /*      0x067 */
411
412 #define ANYOFR                       26        /* 0x1a Matches any character
413                                                   in the range given by its
414                                                   packed args: upper 12 bits
415                                                   is the max delta from the
416                                                   base lower 20; the flags
417                                                   field contains the lowest
418                                                   matchable UTF-8 start byte
419                                                */
420 #define ANYOFR_tb                       52     /*      0x034 */
421 #define ANYOFR_t8                       53     /*      0x035 */
422 #define ANYOFR_tb_pb                      104  /*      0x068 */
423 #define ANYOFR_tb_p8                      105  /*      0x069 */
424 #define ANYOFR_t8_pb                      106  /*      0x06a */
425 #define ANYOFR_t8_p8                      107  /*      0x06b */
426
427 #define ANYOFRb                      27        /* 0x1b Like ANYOFR, but all
428                                                   matches share the same UTF-8
429                                                   start byte, given in the
430                                                   flags field */
431 #define ANYOFRb_tb                      54     /*      0x036 */
432 #define ANYOFRb_t8                      55     /*      0x037 */
433 #define ANYOFRb_tb_pb                     108  /*      0x06c */
434 #define ANYOFRb_tb_p8                     109  /*      0x06d */
435 #define ANYOFRb_t8_pb                     110  /*      0x06e */
436 #define ANYOFRb_t8_p8                     111  /*      0x06f */
437
438 #define ANYOFHbbm                    28        /* 0x1c Like ANYOFHb, but only
439                                                   for 2-byte UTF-8 characters;
440                                                   uses a bitmap to match the
441                                                   continuation byte */
442 #define ANYOFHbbm_tb                    56     /*      0x038 */
443 #define ANYOFHbbm_t8                    57     /*      0x039 */
444 #define ANYOFHbbm_tb_pb                   112  /*      0x070 */
445 #define ANYOFHbbm_tb_p8                   113  /*      0x071 */
446 #define ANYOFHbbm_t8_pb                   114  /*      0x072 */
447 #define ANYOFHbbm_t8_p8                   115  /*      0x073 */
448
449 #define ANYOFM                       29        /* 0x1d Like ANYOF, but matches
450                                                   an invariant byte as
451                                                   determined by the mask and
452                                                   arg */
453 #define ANYOFM_tb                       58     /*      0x03a */
454 #define ANYOFM_t8                       59     /*      0x03b */
455 #define ANYOFM_tb_pb                      116  /*      0x074 */
456 #define ANYOFM_tb_p8                      117  /*      0x075 */
457 #define ANYOFM_t8_pb                      118  /*      0x076 */
458 #define ANYOFM_t8_p8                      119  /*      0x077 */
459
460 #define NANYOFM                      30        /* 0x1e complement of ANYOFM */
461 #define NANYOFM_tb                      60     /*      0x03c */
462 #define NANYOFM_t8                      61     /*      0x03d */
463 #define NANYOFM_tb_pb                     120  /*      0x078 */
464 #define NANYOFM_tb_p8                     121  /*      0x079 */
465 #define NANYOFM_t8_pb                     122  /*      0x07a */
466 #define NANYOFM_t8_p8                     123  /*      0x07b */
467
468 #define POSIXD                       31        /* 0x1f Some [[:class:]] under
469                                                   /d; the FLAGS field gives
470                                                   which one */
471 #define POSIXD_tb                       62     /*      0x03e */
472 #define POSIXD_t8                       63     /*      0x03f */
473 #define POSIXD_tb_pb                      124  /*      0x07c */
474 #define POSIXD_tb_p8                      125  /*      0x07d */
475 #define POSIXD_t8_pb                      126  /*      0x07e */
476 #define POSIXD_t8_p8                      127  /*      0x07f */
477
478 #define POSIXL                       32        /* 0x20 Some [[:class:]] under
479                                                   /l; the FLAGS field gives
480                                                   which one */
481 #define POSIXL_tb                       64     /*      0x040 */
482 #define POSIXL_t8                       65     /*      0x041 */
483 #define POSIXL_tb_pb                      128  /*      0x080 */
484 #define POSIXL_tb_p8                      129  /*      0x081 */
485 #define POSIXL_t8_pb                      130  /*      0x082 */
486 #define POSIXL_t8_p8                      131  /*      0x083 */
487
488 #define POSIXU                       33        /* 0x21 Some [[:class:]] under
489                                                   /u; the FLAGS field gives
490                                                   which one */
491 #define POSIXU_tb                       66     /*      0x042 */
492 #define POSIXU_t8                       67     /*      0x043 */
493 #define POSIXU_tb_pb                      132  /*      0x084 */
494 #define POSIXU_tb_p8                      133  /*      0x085 */
495 #define POSIXU_t8_pb                      134  /*      0x086 */
496 #define POSIXU_t8_p8                      135  /*      0x087 */
497
498 #define POSIXA                       34        /* 0x22 Some [[:class:]] under
499                                                   /a; the FLAGS field gives
500                                                   which one */
501 #define POSIXA_tb                       68     /*      0x044 */
502 #define POSIXA_t8                       69     /*      0x045 */
503 #define POSIXA_tb_pb                      136  /*      0x088 */
504 #define POSIXA_tb_p8                      137  /*      0x089 */
505 #define POSIXA_t8_pb                      138  /*      0x08a */
506 #define POSIXA_t8_p8                      139  /*      0x08b */
507
508 #define NPOSIXD                      35        /* 0x23 complement of POSIXD,
509                                                   [[:^class:]] */
510 #define NPOSIXD_tb                      70     /*      0x046 */
511 #define NPOSIXD_t8                      71     /*      0x047 */
512 #define NPOSIXD_tb_pb                     140  /*      0x08c */
513 #define NPOSIXD_tb_p8                     141  /*      0x08d */
514 #define NPOSIXD_t8_pb                     142  /*      0x08e */
515 #define NPOSIXD_t8_p8                     143  /*      0x08f */
516
517 #define NPOSIXL                      36        /* 0x24 complement of POSIXL,
518                                                   [[:^class:]] */
519 #define NPOSIXL_tb                      72     /*      0x048 */
520 #define NPOSIXL_t8                      73     /*      0x049 */
521 #define NPOSIXL_tb_pb                     144  /*      0x090 */
522 #define NPOSIXL_tb_p8                     145  /*      0x091 */
523 #define NPOSIXL_t8_pb                     146  /*      0x092 */
524 #define NPOSIXL_t8_p8                     147  /*      0x093 */
525
526 #define NPOSIXU                      37        /* 0x25 complement of POSIXU,
527                                                   [[:^class:]] */
528 #define NPOSIXU_tb                      74     /*      0x04a */
529 #define NPOSIXU_t8                      75     /*      0x04b */
530 #define NPOSIXU_tb_pb                     148  /*      0x094 */
531 #define NPOSIXU_tb_p8                     149  /*      0x095 */
532 #define NPOSIXU_t8_pb                     150  /*      0x096 */
533 #define NPOSIXU_t8_p8                     151  /*      0x097 */
534
535 #define NPOSIXA                      38        /* 0x26 complement of POSIXA,
536                                                   [[:^class:]] */
537 #define NPOSIXA_tb                      76     /*      0x04c */
538 #define NPOSIXA_t8                      77     /*      0x04d */
539 #define NPOSIXA_tb_pb                     152  /*      0x098 */
540 #define NPOSIXA_tb_p8                     153  /*      0x099 */
541 #define NPOSIXA_t8_pb                     154  /*      0x09a */
542 #define NPOSIXA_t8_p8                     155  /*      0x09b */
543
544 #define CLUMP                        39        /* 0x27 Match any extended
545                                                   grapheme cluster sequence */
546 #define CLUMP_tb                        78     /*      0x04e */
547 #define CLUMP_t8                        79     /*      0x04f */
548 #define CLUMP_tb_pb                       156  /*      0x09c */
549 #define CLUMP_tb_p8                       157  /*      0x09d */
550 #define CLUMP_t8_pb                       158  /*      0x09e */
551 #define CLUMP_t8_p8                       159  /*      0x09f */
552
553 #define BRANCH                       40        /* 0x28 Match this alternative,
554                                                   or the next... */
555 #define BRANCH_tb                       80     /*      0x050 */
556 #define BRANCH_t8                       81     /*      0x051 */
557 #define BRANCH_tb_pb                      160  /*      0x0a0 */
558 #define BRANCH_tb_p8                      161  /*      0x0a1 */
559 #define BRANCH_t8_pb                      162  /*      0x0a2 */
560 #define BRANCH_t8_p8                      163  /*      0x0a3 */
561
562 #define EXACT                        41        /* 0x29 Match this string
563                                                   (flags field is the length).
564                                                */
565 #define EXACT_tb                        82     /*      0x052 */
566 #define EXACT_t8                        83     /*      0x053 */
567 #define EXACT_tb_pb                       164  /*      0x0a4 */
568 #define EXACT_tb_p8                       165  /*      0x0a5 */
569 #define EXACT_t8_pb                       166  /*      0x0a6 */
570 #define EXACT_t8_p8                       167  /*      0x0a7 */
571
572 #define LEXACT                       42        /* 0x2a Match this long string
573                                                   (preceded by length; flags
574                                                   unused). */
575 #define LEXACT_tb                       84     /*      0x054 */
576 #define LEXACT_t8                       85     /*      0x055 */
577 #define LEXACT_tb_pb                      168  /*      0x0a8 */
578 #define LEXACT_tb_p8                      169  /*      0x0a9 */
579 #define LEXACT_t8_pb                      170  /*      0x0aa */
580 #define LEXACT_t8_p8                      171  /*      0x0ab */
581
582 #define EXACTL                       43        /* 0x2b Like EXACT, but /l is
583                                                   in effect (used so
584                                                   locale-related warnings can
585                                                   be checked for) */
586 #define EXACTL_tb                       86     /*      0x056 */
587 #define EXACTL_t8                       87     /*      0x057 */
588 #define EXACTL_tb_pb                      172  /*      0x0ac */
589 #define EXACTL_tb_p8                      173  /*      0x0ad */
590 #define EXACTL_t8_pb                      174  /*      0x0ae */
591 #define EXACTL_t8_p8                      175  /*      0x0af */
592
593 #define EXACTF                       44        /* 0x2c Like EXACT, but match
594                                                   using /id rules; (string not
595                                                   UTF-8, ASCII folded;
596                                                   non-ASCII not) */
597 #define EXACTF_tb                       88     /*      0x058 */
598 #define EXACTF_t8                       89     /*      0x059 */
599 #define EXACTF_tb_pb                      176  /*      0x0b0 */
600 #define EXACTF_tb_p8                      177  /*      0x0b1 */
601 #define EXACTF_t8_pb                      178  /*      0x0b2 */
602 #define EXACTF_t8_p8                      179  /*      0x0b3 */
603
604 #define EXACTFL                      45        /* 0x2d Like EXACT, but match
605                                                   using /il rules; (string not
606                                                   likely to be folded) */
607 #define EXACTFL_tb                      90     /*      0x05a */
608 #define EXACTFL_t8                      91     /*      0x05b */
609 #define EXACTFL_tb_pb                     180  /*      0x0b4 */
610 #define EXACTFL_tb_p8                     181  /*      0x0b5 */
611 #define EXACTFL_t8_pb                     182  /*      0x0b6 */
612 #define EXACTFL_t8_p8                     183  /*      0x0b7 */
613
614 #define EXACTFU                      46        /* 0x2e Like EXACT, but match
615                                                   using /iu rules; (string
616                                                   folded) */
617 #define EXACTFU_tb                      92     /*      0x05c */
618 #define EXACTFU_t8                      93     /*      0x05d */
619 #define EXACTFU_tb_pb                     184  /*      0x0b8 */
620 #define EXACTFU_tb_p8                     185  /*      0x0b9 */
621 #define EXACTFU_t8_pb                     186  /*      0x0ba */
622 #define EXACTFU_t8_p8                     187  /*      0x0bb */
623
624 #define EXACTFAA                     47        /* 0x2f Like EXACT, but match
625                                                   using /iaa rules; (string
626                                                   folded except MICRO in
627                                                   non-UTF8 patterns; doesn't
628                                                   contain SHARP S unless
629                                                   UTF-8; folded length <=
630                                                   unfolded) */
631 #define EXACTFAA_tb                     94     /*      0x05e */
632 #define EXACTFAA_t8                     95     /*      0x05f */
633 #define EXACTFAA_tb_pb                    188  /*      0x0bc */
634 #define EXACTFAA_tb_p8                    189  /*      0x0bd */
635 #define EXACTFAA_t8_pb                    190  /*      0x0be */
636 #define EXACTFAA_t8_p8                    191  /*      0x0bf */
637
638 #define EXACTFAA_NO_TRIE             48        /* 0x30 Like EXACTFAA, (string
639                                                   not UTF-8, folded except:
640                                                   MICRO, SHARP S; folded
641                                                   length <= unfolded, not
642                                                   currently trie-able) */
643 #define EXACTFAA_NO_TRIE_tb             96     /*      0x060 */
644 #define EXACTFAA_NO_TRIE_t8             97     /*      0x061 */
645 #define EXACTFAA_NO_TRIE_tb_pb            192  /*      0x0c0 */
646 #define EXACTFAA_NO_TRIE_tb_p8            193  /*      0x0c1 */
647 #define EXACTFAA_NO_TRIE_t8_pb            194  /*      0x0c2 */
648 #define EXACTFAA_NO_TRIE_t8_p8            195  /*      0x0c3 */
649
650 #define EXACTFUP                     49        /* 0x31 Like EXACT, but match
651                                                   using /iu rules; (string not
652                                                   UTF-8, folded except MICRO:
653                                                   hence Problematic) */
654 #define EXACTFUP_tb                     98     /*      0x062 */
655 #define EXACTFUP_t8                     99     /*      0x063 */
656 #define EXACTFUP_tb_pb                    196  /*      0x0c4 */
657 #define EXACTFUP_tb_p8                    197  /*      0x0c5 */
658 #define EXACTFUP_t8_pb                    198  /*      0x0c6 */
659 #define EXACTFUP_t8_p8                    199  /*      0x0c7 */
660
661 #define EXACTFLU8                    50        /* 0x32 Like EXACTFU, but use
662                                                   /il, UTF-8, (string is
663                                                   folded, and everything in it
664                                                   is above 255 */
665 #define EXACTFLU8_tb                   100     /*      0x064 */
666 #define EXACTFLU8_t8                   101     /*      0x065 */
667 #define EXACTFLU8_tb_pb                   200  /*      0x0c8 */
668 #define EXACTFLU8_tb_p8                   201  /*      0x0c9 */
669 #define EXACTFLU8_t8_pb                   202  /*      0x0ca */
670 #define EXACTFLU8_t8_p8                   203  /*      0x0cb */
671
672 #define EXACT_REQ8                   51        /* 0x33 Like EXACT, but only
673                                                   UTF-8 encoded targets can
674                                                   match */
675 #define EXACT_REQ8_tb                  102     /*      0x066 */
676 #define EXACT_REQ8_t8                  103     /*      0x067 */
677 #define EXACT_REQ8_tb_pb                  204  /*      0x0cc */
678 #define EXACT_REQ8_tb_p8                  205  /*      0x0cd */
679 #define EXACT_REQ8_t8_pb                  206  /*      0x0ce */
680 #define EXACT_REQ8_t8_p8                  207  /*      0x0cf */
681
682 #define LEXACT_REQ8                  52        /* 0x34 Like LEXACT, but only
683                                                   UTF-8 encoded targets can
684                                                   match */
685 #define LEXACT_REQ8_tb                 104     /*      0x068 */
686 #define LEXACT_REQ8_t8                 105     /*      0x069 */
687 #define LEXACT_REQ8_tb_pb                 208  /*      0x0d0 */
688 #define LEXACT_REQ8_tb_p8                 209  /*      0x0d1 */
689 #define LEXACT_REQ8_t8_pb                 210  /*      0x0d2 */
690 #define LEXACT_REQ8_t8_p8                 211  /*      0x0d3 */
691
692 #define EXACTFU_REQ8                 53        /* 0x35 Like EXACTFU, but only
693                                                   UTF-8 encoded targets can
694                                                   match */
695 #define EXACTFU_REQ8_tb                106     /*      0x06a */
696 #define EXACTFU_REQ8_t8                107     /*      0x06b */
697 #define EXACTFU_REQ8_tb_pb                212  /*      0x0d4 */
698 #define EXACTFU_REQ8_tb_p8                213  /*      0x0d5 */
699 #define EXACTFU_REQ8_t8_pb                214  /*      0x0d6 */
700 #define EXACTFU_REQ8_t8_p8                215  /*      0x0d7 */
701
702 #define EXACTFU_S_EDGE               54        /* 0x36 /di rules, but nothing
703                                                   in it precludes /ui, except
704                                                   begins and/or ends with
705                                                   [Ss]; (string not UTF-8;
706                                                   compile-time only) */
707 #define EXACTFU_S_EDGE_tb              108     /*      0x06c */
708 #define EXACTFU_S_EDGE_t8              109     /*      0x06d */
709 #define EXACTFU_S_EDGE_tb_pb              216  /*      0x0d8 */
710 #define EXACTFU_S_EDGE_tb_p8              217  /*      0x0d9 */
711 #define EXACTFU_S_EDGE_t8_pb              218  /*      0x0da */
712 #define EXACTFU_S_EDGE_t8_p8              219  /*      0x0db */
713
714 #define LNBREAK                      55        /* 0x37 generic newline pattern
715                                                */
716 #define LNBREAK_tb                     110     /*      0x06e */
717 #define LNBREAK_t8                     111     /*      0x06f */
718 #define LNBREAK_tb_pb                     220  /*      0x0dc */
719 #define LNBREAK_tb_p8                     221  /*      0x0dd */
720 #define LNBREAK_t8_pb                     222  /*      0x0de */
721 #define LNBREAK_t8_p8                     223  /*      0x0df */
722
723 #define TRIE                         56        /* 0x38 Match many
724                                                   EXACT(F[ALU]?)? at once.
725                                                   flags==type */
726 #define TRIE_tb                        112     /*      0x070 */
727 #define TRIE_t8                        113     /*      0x071 */
728 #define TRIE_tb_pb                        224  /*      0x0e0 */
729 #define TRIE_tb_p8                        225  /*      0x0e1 */
730 #define TRIE_t8_pb                        226  /*      0x0e2 */
731 #define TRIE_t8_p8                        227  /*      0x0e3 */
732
733 #define TRIEC                        57        /* 0x39 Same as TRIE, but with
734                                                   embedded charclass data */
735 #define TRIEC_tb                       114     /*      0x072 */
736 #define TRIEC_t8                       115     /*      0x073 */
737 #define TRIEC_tb_pb                       228  /*      0x0e4 */
738 #define TRIEC_tb_p8                       229  /*      0x0e5 */
739 #define TRIEC_t8_pb                       230  /*      0x0e6 */
740 #define TRIEC_t8_p8                       231  /*      0x0e7 */
741
742 #define AHOCORASICK                  58        /* 0x3a Aho Corasick stclass.
743                                                   flags==type */
744 #define AHOCORASICK_tb                 116     /*      0x074 */
745 #define AHOCORASICK_t8                 117     /*      0x075 */
746 #define AHOCORASICK_tb_pb                 232  /*      0x0e8 */
747 #define AHOCORASICK_tb_p8                 233  /*      0x0e9 */
748 #define AHOCORASICK_t8_pb                 234  /*      0x0ea */
749 #define AHOCORASICK_t8_p8                 235  /*      0x0eb */
750
751 #define AHOCORASICKC                 59        /* 0x3b Same as AHOCORASICK,
752                                                   but with embedded charclass
753                                                   data */
754 #define AHOCORASICKC_tb                118     /*      0x076 */
755 #define AHOCORASICKC_t8                119     /*      0x077 */
756 #define AHOCORASICKC_tb_pb                236  /*      0x0ec */
757 #define AHOCORASICKC_tb_p8                237  /*      0x0ed */
758 #define AHOCORASICKC_t8_pb                238  /*      0x0ee */
759 #define AHOCORASICKC_t8_p8                239  /*      0x0ef */
760
761 #define NOTHING                      60        /* 0x3c Match empty string. */
762 #define NOTHING_tb                     120     /*      0x078 */
763 #define NOTHING_t8                     121     /*      0x079 */
764 #define NOTHING_tb_pb                     240  /*      0x0f0 */
765 #define NOTHING_tb_p8                     241  /*      0x0f1 */
766 #define NOTHING_t8_pb                     242  /*      0x0f2 */
767 #define NOTHING_t8_p8                     243  /*      0x0f3 */
768
769 #define TAIL                         61        /* 0x3d Match empty string. Can
770                                                   jump here from outside. */
771 #define TAIL_tb                        122     /*      0x07a */
772 #define TAIL_t8                        123     /*      0x07b */
773 #define TAIL_tb_pb                        244  /*      0x0f4 */
774 #define TAIL_tb_p8                        245  /*      0x0f5 */
775 #define TAIL_t8_pb                        246  /*      0x0f6 */
776 #define TAIL_t8_p8                        247  /*      0x0f7 */
777
778 #define STAR                         62        /* 0x3e Match this (simple)
779                                                   thing 0 or more times:
780                                                   /A{0,}B/ where A is width 1
781                                                   char */
782 #define STAR_tb                        124     /*      0x07c */
783 #define STAR_t8                        125     /*      0x07d */
784 #define STAR_tb_pb                        248  /*      0x0f8 */
785 #define STAR_tb_p8                        249  /*      0x0f9 */
786 #define STAR_t8_pb                        250  /*      0x0fa */
787 #define STAR_t8_p8                        251  /*      0x0fb */
788
789 #define PLUS                         63        /* 0x3f Match this (simple)
790                                                   thing 1 or more times:
791                                                   /A{1,}B/ where A is width 1
792                                                   char */
793 #define PLUS_tb                        126     /*      0x07e */
794 #define PLUS_t8                        127     /*      0x07f */
795 #define PLUS_tb_pb                        252  /*      0x0fc */
796 #define PLUS_tb_p8                        253  /*      0x0fd */
797 #define PLUS_t8_pb                        254  /*      0x0fe */
798 #define PLUS_t8_p8                        255  /*      0x0ff */
799
800 #define CURLY                        64        /* 0x40 Match this (simple)
801                                                   thing {n,m} times: /A{m,n}B/
802                                                   where A is width 1 char */
803 #define CURLY_tb                       128     /*      0x080 */
804 #define CURLY_t8                       129     /*      0x081 */
805 #define CURLY_tb_pb                       256  /*      0x100 */
806 #define CURLY_tb_p8                       257  /*      0x101 */
807 #define CURLY_t8_pb                       258  /*      0x102 */
808 #define CURLY_t8_p8                       259  /*      0x103 */
809
810 #define CURLYN                       65        /* 0x41 Capture next-after-this
811                                                   simple thing: /(A){m,n}B/
812                                                   where A is width 1 char */
813 #define CURLYN_tb                      130     /*      0x082 */
814 #define CURLYN_t8                      131     /*      0x083 */
815 #define CURLYN_tb_pb                      260  /*      0x104 */
816 #define CURLYN_tb_p8                      261  /*      0x105 */
817 #define CURLYN_t8_pb                      262  /*      0x106 */
818 #define CURLYN_t8_p8                      263  /*      0x107 */
819
820 #define CURLYM                       66        /* 0x42 Capture this
821                                                   medium-complex thing {n,m}
822                                                   times: /(A){m,n}B/ where A
823                                                   is fixed-length */
824 #define CURLYM_tb                      132     /*      0x084 */
825 #define CURLYM_t8                      133     /*      0x085 */
826 #define CURLYM_tb_pb                      264  /*      0x108 */
827 #define CURLYM_tb_p8                      265  /*      0x109 */
828 #define CURLYM_t8_pb                      266  /*      0x10a */
829 #define CURLYM_t8_p8                      267  /*      0x10b */
830
831 #define CURLYX                       67        /* 0x43 Match/Capture this
832                                                   complex thing {n,m} times.
833                                                */
834 #define CURLYX_tb                      134     /*      0x086 */
835 #define CURLYX_t8                      135     /*      0x087 */
836 #define CURLYX_tb_pb                      268  /*      0x10c */
837 #define CURLYX_tb_p8                      269  /*      0x10d */
838 #define CURLYX_t8_pb                      270  /*      0x10e */
839 #define CURLYX_t8_p8                      271  /*      0x10f */
840
841 #define WHILEM                       68        /* 0x44 Do curly processing and
842                                                   see if rest matches. */
843 #define WHILEM_tb                      136     /*      0x088 */
844 #define WHILEM_t8                      137     /*      0x089 */
845 #define WHILEM_tb_pb                      272  /*      0x110 */
846 #define WHILEM_tb_p8                      273  /*      0x111 */
847 #define WHILEM_t8_pb                      274  /*      0x112 */
848 #define WHILEM_t8_p8                      275  /*      0x113 */
849
850 #define OPEN                         69        /* 0x45 Mark this point in
851                                                   input as start of #n. */
852 #define OPEN_tb                        138     /*      0x08a */
853 #define OPEN_t8                        139     /*      0x08b */
854 #define OPEN_tb_pb                        276  /*      0x114 */
855 #define OPEN_tb_p8                        277  /*      0x115 */
856 #define OPEN_t8_pb                        278  /*      0x116 */
857 #define OPEN_t8_p8                        279  /*      0x117 */
858
859 #define CLOSE                        70        /* 0x46 Close corresponding
860                                                   OPEN of #n. */
861 #define CLOSE_tb                       140     /*      0x08c */
862 #define CLOSE_t8                       141     /*      0x08d */
863 #define CLOSE_tb_pb                       280  /*      0x118 */
864 #define CLOSE_tb_p8                       281  /*      0x119 */
865 #define CLOSE_t8_pb                       282  /*      0x11a */
866 #define CLOSE_t8_p8                       283  /*      0x11b */
867
868 #define SROPEN                       71        /* 0x47 Same as OPEN, but for
869                                                   script run */
870 #define SROPEN_tb                      142     /*      0x08e */
871 #define SROPEN_t8                      143     /*      0x08f */
872 #define SROPEN_tb_pb                      284  /*      0x11c */
873 #define SROPEN_tb_p8                      285  /*      0x11d */
874 #define SROPEN_t8_pb                      286  /*      0x11e */
875 #define SROPEN_t8_p8                      287  /*      0x11f */
876
877 #define SRCLOSE                      72        /* 0x48 Close preceding SROPEN
878                                                */
879 #define SRCLOSE_tb                     144     /*      0x090 */
880 #define SRCLOSE_t8                     145     /*      0x091 */
881 #define SRCLOSE_tb_pb                     288  /*      0x120 */
882 #define SRCLOSE_tb_p8                     289  /*      0x121 */
883 #define SRCLOSE_t8_pb                     290  /*      0x122 */
884 #define SRCLOSE_t8_p8                     291  /*      0x123 */
885
886 #define REF                          73        /* 0x49 Match some already
887                                                   matched string */
888 #define REF_tb                         146     /*      0x092 */
889 #define REF_t8                         147     /*      0x093 */
890 #define REF_tb_pb                         292  /*      0x124 */
891 #define REF_tb_p8                         293  /*      0x125 */
892 #define REF_t8_pb                         294  /*      0x126 */
893 #define REF_t8_p8                         295  /*      0x127 */
894
895 #define REFF                         74        /* 0x4a Match already matched
896                                                   string, using /di rules. */
897 #define REFF_tb                        148     /*      0x094 */
898 #define REFF_t8                        149     /*      0x095 */
899 #define REFF_tb_pb                        296  /*      0x128 */
900 #define REFF_tb_p8                        297  /*      0x129 */
901 #define REFF_t8_pb                        298  /*      0x12a */
902 #define REFF_t8_p8                        299  /*      0x12b */
903
904 #define REFFL                        75        /* 0x4b Match already matched
905                                                   string, using /li rules. */
906 #define REFFL_tb                       150     /*      0x096 */
907 #define REFFL_t8                       151     /*      0x097 */
908 #define REFFL_tb_pb                       300  /*      0x12c */
909 #define REFFL_tb_p8                       301  /*      0x12d */
910 #define REFFL_t8_pb                       302  /*      0x12e */
911 #define REFFL_t8_p8                       303  /*      0x12f */
912
913 #define REFFU                        76        /* 0x4c Match already matched
914                                                   string, usng /ui. */
915 #define REFFU_tb                       152     /*      0x098 */
916 #define REFFU_t8                       153     /*      0x099 */
917 #define REFFU_tb_pb                       304  /*      0x130 */
918 #define REFFU_tb_p8                       305  /*      0x131 */
919 #define REFFU_t8_pb                       306  /*      0x132 */
920 #define REFFU_t8_p8                       307  /*      0x133 */
921
922 #define REFFA                        77        /* 0x4d Match already matched
923                                                   string, using /aai rules. */
924 #define REFFA_tb                       154     /*      0x09a */
925 #define REFFA_t8                       155     /*      0x09b */
926 #define REFFA_tb_pb                       308  /*      0x134 */
927 #define REFFA_tb_p8                       309  /*      0x135 */
928 #define REFFA_t8_pb                       310  /*      0x136 */
929 #define REFFA_t8_p8                       311  /*      0x137 */
930
931 #define REFN                         78        /* 0x4e Match some already
932                                                   matched string */
933 #define REFN_tb                        156     /*      0x09c */
934 #define REFN_t8                        157     /*      0x09d */
935 #define REFN_tb_pb                        312  /*      0x138 */
936 #define REFN_tb_p8                        313  /*      0x139 */
937 #define REFN_t8_pb                        314  /*      0x13a */
938 #define REFN_t8_p8                        315  /*      0x13b */
939
940 #define REFFN                        79        /* 0x4f Match already matched
941                                                   string, using /di rules. */
942 #define REFFN_tb                       158     /*      0x09e */
943 #define REFFN_t8                       159     /*      0x09f */
944 #define REFFN_tb_pb                       316  /*      0x13c */
945 #define REFFN_tb_p8                       317  /*      0x13d */
946 #define REFFN_t8_pb                       318  /*      0x13e */
947 #define REFFN_t8_p8                       319  /*      0x13f */
948
949 #define REFFLN                       80        /* 0x50 Match already matched
950                                                   string, using /li rules. */
951 #define REFFLN_tb                      160     /*      0x0a0 */
952 #define REFFLN_t8                      161     /*      0x0a1 */
953 #define REFFLN_tb_pb                      320  /*      0x140 */
954 #define REFFLN_tb_p8                      321  /*      0x141 */
955 #define REFFLN_t8_pb                      322  /*      0x142 */
956 #define REFFLN_t8_p8                      323  /*      0x143 */
957
958 #define REFFUN                       81        /* 0x51 Match already matched
959                                                   string, using /ui rules. */
960 #define REFFUN_tb                      162     /*      0x0a2 */
961 #define REFFUN_t8                      163     /*      0x0a3 */
962 #define REFFUN_tb_pb                      324  /*      0x144 */
963 #define REFFUN_tb_p8                      325  /*      0x145 */
964 #define REFFUN_t8_pb                      326  /*      0x146 */
965 #define REFFUN_t8_p8                      327  /*      0x147 */
966
967 #define REFFAN                       82        /* 0x52 Match already matched
968                                                   string, using /aai rules. */
969 #define REFFAN_tb                      164     /*      0x0a4 */
970 #define REFFAN_t8                      165     /*      0x0a5 */
971 #define REFFAN_tb_pb                      328  /*      0x148 */
972 #define REFFAN_tb_p8                      329  /*      0x149 */
973 #define REFFAN_t8_pb                      330  /*      0x14a */
974 #define REFFAN_t8_p8                      331  /*      0x14b */
975
976 #define LONGJMP                      83        /* 0x53 Jump far away. */
977 #define LONGJMP_tb                     166     /*      0x0a6 */
978 #define LONGJMP_t8                     167     /*      0x0a7 */
979 #define LONGJMP_tb_pb                     332  /*      0x14c */
980 #define LONGJMP_tb_p8                     333  /*      0x14d */
981 #define LONGJMP_t8_pb                     334  /*      0x14e */
982 #define LONGJMP_t8_p8                     335  /*      0x14f */
983
984 #define BRANCHJ                      84        /* 0x54 BRANCH with long
985                                                   offset. */
986 #define BRANCHJ_tb                     168     /*      0x0a8 */
987 #define BRANCHJ_t8                     169     /*      0x0a9 */
988 #define BRANCHJ_tb_pb                     336  /*      0x150 */
989 #define BRANCHJ_tb_p8                     337  /*      0x151 */
990 #define BRANCHJ_t8_pb                     338  /*      0x152 */
991 #define BRANCHJ_t8_p8                     339  /*      0x153 */
992
993 #define IFMATCH                      85        /* 0x55 Succeeds if the
994                                                   following matches; non-zero
995                                                   flags "f", next_off "o"
996                                                   means lookbehind assertion
997                                                   starting "f..(f-o)"
998                                                   characters before current */
999 #define IFMATCH_tb                     170     /*      0x0aa */
1000 #define IFMATCH_t8                     171     /*      0x0ab */
1001 #define IFMATCH_tb_pb                     340  /*      0x154 */
1002 #define IFMATCH_tb_p8                     341  /*      0x155 */
1003 #define IFMATCH_t8_pb                     342  /*      0x156 */
1004 #define IFMATCH_t8_p8                     343  /*      0x157 */
1005
1006 #define UNLESSM                      86        /* 0x56 Fails if the following
1007                                                   matches; non-zero flags "f",
1008                                                   next_off "o" means
1009                                                   lookbehind assertion
1010                                                   starting "f..(f-o)"
1011                                                   characters before current */
1012 #define UNLESSM_tb                     172     /*      0x0ac */
1013 #define UNLESSM_t8                     173     /*      0x0ad */
1014 #define UNLESSM_tb_pb                     344  /*      0x158 */
1015 #define UNLESSM_tb_p8                     345  /*      0x159 */
1016 #define UNLESSM_t8_pb                     346  /*      0x15a */
1017 #define UNLESSM_t8_p8                     347  /*      0x15b */
1018
1019 #define SUSPEND                      87        /* 0x57 "Independent" sub-RE.
1020                                                */
1021 #define SUSPEND_tb                     174     /*      0x0ae */
1022 #define SUSPEND_t8                     175     /*      0x0af */
1023 #define SUSPEND_tb_pb                     348  /*      0x15c */
1024 #define SUSPEND_tb_p8                     349  /*      0x15d */
1025 #define SUSPEND_t8_pb                     350  /*      0x15e */
1026 #define SUSPEND_t8_p8                     351  /*      0x15f */
1027
1028 #define IFTHEN                       88        /* 0x58 Switch, should be
1029                                                   preceded by switcher. */
1030 #define IFTHEN_tb                      176     /*      0x0b0 */
1031 #define IFTHEN_t8                      177     /*      0x0b1 */
1032 #define IFTHEN_tb_pb                      352  /*      0x160 */
1033 #define IFTHEN_tb_p8                      353  /*      0x161 */
1034 #define IFTHEN_t8_pb                      354  /*      0x162 */
1035 #define IFTHEN_t8_p8                      355  /*      0x163 */
1036
1037 #define GROUPP                       89        /* 0x59 Whether the group
1038                                                   matched. */
1039 #define GROUPP_tb                      178     /*      0x0b2 */
1040 #define GROUPP_t8                      179     /*      0x0b3 */
1041 #define GROUPP_tb_pb                      356  /*      0x164 */
1042 #define GROUPP_tb_p8                      357  /*      0x165 */
1043 #define GROUPP_t8_pb                      358  /*      0x166 */
1044 #define GROUPP_t8_p8                      359  /*      0x167 */
1045
1046 #define EVAL                         90        /* 0x5a Execute some Perl code.
1047                                                */
1048 #define EVAL_tb                        180     /*      0x0b4 */
1049 #define EVAL_t8                        181     /*      0x0b5 */
1050 #define EVAL_tb_pb                        360  /*      0x168 */
1051 #define EVAL_tb_p8                        361  /*      0x169 */
1052 #define EVAL_t8_pb                        362  /*      0x16a */
1053 #define EVAL_t8_p8                        363  /*      0x16b */
1054
1055 #define MINMOD                       91        /* 0x5b Next operator is not
1056                                                   greedy. */
1057 #define MINMOD_tb                      182     /*      0x0b6 */
1058 #define MINMOD_t8                      183     /*      0x0b7 */
1059 #define MINMOD_tb_pb                      364  /*      0x16c */
1060 #define MINMOD_tb_p8                      365  /*      0x16d */
1061 #define MINMOD_t8_pb                      366  /*      0x16e */
1062 #define MINMOD_t8_p8                      367  /*      0x16f */
1063
1064 #define LOGICAL                      92        /* 0x5c Next opcode should set
1065                                                   the flag only. */
1066 #define LOGICAL_tb                     184     /*      0x0b8 */
1067 #define LOGICAL_t8                     185     /*      0x0b9 */
1068 #define LOGICAL_tb_pb                     368  /*      0x170 */
1069 #define LOGICAL_tb_p8                     369  /*      0x171 */
1070 #define LOGICAL_t8_pb                     370  /*      0x172 */
1071 #define LOGICAL_t8_p8                     371  /*      0x173 */
1072
1073 #define RENUM                        93        /* 0x5d Group with
1074                                                   independently numbered
1075                                                   parens. */
1076 #define RENUM_tb                       186     /*      0x0ba */
1077 #define RENUM_t8                       187     /*      0x0bb */
1078 #define RENUM_tb_pb                       372  /*      0x174 */
1079 #define RENUM_tb_p8                       373  /*      0x175 */
1080 #define RENUM_t8_pb                       374  /*      0x176 */
1081 #define RENUM_t8_p8                       375  /*      0x177 */
1082
1083 #define GOSUB                        94        /* 0x5e recurse to paren arg1
1084                                                   at (signed) ofs arg2 */
1085 #define GOSUB_tb                       188     /*      0x0bc */
1086 #define GOSUB_t8                       189     /*      0x0bd */
1087 #define GOSUB_tb_pb                       376  /*      0x178 */
1088 #define GOSUB_tb_p8                       377  /*      0x179 */
1089 #define GOSUB_t8_pb                       378  /*      0x17a */
1090 #define GOSUB_t8_p8                       379  /*      0x17b */
1091
1092 #define GROUPPN                      95        /* 0x5f Whether the group
1093                                                   matched. */
1094 #define GROUPPN_tb                     190     /*      0x0be */
1095 #define GROUPPN_t8                     191     /*      0x0bf */
1096 #define GROUPPN_tb_pb                     380  /*      0x17c */
1097 #define GROUPPN_tb_p8                     381  /*      0x17d */
1098 #define GROUPPN_t8_pb                     382  /*      0x17e */
1099 #define GROUPPN_t8_p8                     383  /*      0x17f */
1100
1101 #define INSUBP                       96        /* 0x60 Whether we are in a
1102                                                   specific recurse. */
1103 #define INSUBP_tb                      192     /*      0x0c0 */
1104 #define INSUBP_t8                      193     /*      0x0c1 */
1105 #define INSUBP_tb_pb                      384  /*      0x180 */
1106 #define INSUBP_tb_p8                      385  /*      0x181 */
1107 #define INSUBP_t8_pb                      386  /*      0x182 */
1108 #define INSUBP_t8_p8                      387  /*      0x183 */
1109
1110 #define DEFINEP                      97        /* 0x61 Never execute directly.
1111                                                */
1112 #define DEFINEP_tb                     194     /*      0x0c2 */
1113 #define DEFINEP_t8                     195     /*      0x0c3 */
1114 #define DEFINEP_tb_pb                     388  /*      0x184 */
1115 #define DEFINEP_tb_p8                     389  /*      0x185 */
1116 #define DEFINEP_t8_pb                     390  /*      0x186 */
1117 #define DEFINEP_t8_p8                     391  /*      0x187 */
1118
1119 #define ENDLIKE                      98        /* 0x62 Used only for the type
1120                                                   field of verbs */
1121 #define ENDLIKE_tb                     196     /*      0x0c4 */
1122 #define ENDLIKE_t8                     197     /*      0x0c5 */
1123 #define ENDLIKE_tb_pb                     392  /*      0x188 */
1124 #define ENDLIKE_tb_p8                     393  /*      0x189 */
1125 #define ENDLIKE_t8_pb                     394  /*      0x18a */
1126 #define ENDLIKE_t8_p8                     395  /*      0x18b */
1127
1128 #define OPFAIL                       99        /* 0x63 Same as (?!), but with
1129                                                   verb arg */
1130 #define OPFAIL_tb                      198     /*      0x0c6 */
1131 #define OPFAIL_t8                      199     /*      0x0c7 */
1132 #define OPFAIL_tb_pb                      396  /*      0x18c */
1133 #define OPFAIL_tb_p8                      397  /*      0x18d */
1134 #define OPFAIL_t8_pb                      398  /*      0x18e */
1135 #define OPFAIL_t8_p8                      399  /*      0x18f */
1136
1137 #define ACCEPT                      100        /* 0x64 Accepts the current
1138                                                   matched string, with verbar
1139                                                */
1140 #define ACCEPT_tb                      200     /*      0x0c8 */
1141 #define ACCEPT_t8                      201     /*      0x0c9 */
1142 #define ACCEPT_tb_pb                      400  /*      0x190 */
1143 #define ACCEPT_tb_p8                      401  /*      0x191 */
1144 #define ACCEPT_t8_pb                      402  /*      0x192 */
1145 #define ACCEPT_t8_p8                      403  /*      0x193 */
1146
1147 #define VERB                        101        /* 0x65 Used only for the type
1148                                                   field of verbs */
1149 #define VERB_tb                        202     /*      0x0ca */
1150 #define VERB_t8                        203     /*      0x0cb */
1151 #define VERB_tb_pb                        404  /*      0x194 */
1152 #define VERB_tb_p8                        405  /*      0x195 */
1153 #define VERB_t8_pb                        406  /*      0x196 */
1154 #define VERB_t8_p8                        407  /*      0x197 */
1155
1156 #define PRUNE                       102        /* 0x66 Pattern fails at this
1157                                                   startpoint if
1158                                                   no-backtracking through this
1159                                                */
1160 #define PRUNE_tb                       204     /*      0x0cc */
1161 #define PRUNE_t8                       205     /*      0x0cd */
1162 #define PRUNE_tb_pb                       408  /*      0x198 */
1163 #define PRUNE_tb_p8                       409  /*      0x199 */
1164 #define PRUNE_t8_pb                       410  /*      0x19a */
1165 #define PRUNE_t8_p8                       411  /*      0x19b */
1166
1167 #define MARKPOINT                   103        /* 0x67 Push the current
1168                                                   location for rollback by
1169                                                   cut. */
1170 #define MARKPOINT_tb                   206     /*      0x0ce */
1171 #define MARKPOINT_t8                   207     /*      0x0cf */
1172 #define MARKPOINT_tb_pb                   412  /*      0x19c */
1173 #define MARKPOINT_tb_p8                   413  /*      0x19d */
1174 #define MARKPOINT_t8_pb                   414  /*      0x19e */
1175 #define MARKPOINT_t8_p8                   415  /*      0x19f */
1176
1177 #define SKIP                        104        /* 0x68 On failure skip forward
1178                                                   (to the mark) before
1179                                                   retrying */
1180 #define SKIP_tb                        208     /*      0x0d0 */
1181 #define SKIP_t8                        209     /*      0x0d1 */
1182 #define SKIP_tb_pb                        416  /*      0x1a0 */
1183 #define SKIP_tb_p8                        417  /*      0x1a1 */
1184 #define SKIP_t8_pb                        418  /*      0x1a2 */
1185 #define SKIP_t8_p8                        419  /*      0x1a3 */
1186
1187 #define COMMIT                      105        /* 0x69 Pattern fails outright
1188                                                   if backtracking through this
1189                                                */
1190 #define COMMIT_tb                      210     /*      0x0d2 */
1191 #define COMMIT_t8                      211     /*      0x0d3 */
1192 #define COMMIT_tb_pb                      420  /*      0x1a4 */
1193 #define COMMIT_tb_p8                      421  /*      0x1a5 */
1194 #define COMMIT_t8_pb                      422  /*      0x1a6 */
1195 #define COMMIT_t8_p8                      423  /*      0x1a7 */
1196
1197 #define CUTGROUP                    106        /* 0x6a On failure go to the
1198                                                   next alternation in the
1199                                                   group */
1200 #define CUTGROUP_tb                    212     /*      0x0d4 */
1201 #define CUTGROUP_t8                    213     /*      0x0d5 */
1202 #define CUTGROUP_tb_pb                    424  /*      0x1a8 */
1203 #define CUTGROUP_tb_p8                    425  /*      0x1a9 */
1204 #define CUTGROUP_t8_pb                    426  /*      0x1aa */
1205 #define CUTGROUP_t8_p8                    427  /*      0x1ab */
1206
1207 #define KEEPS                       107        /* 0x6b $& begins here. */
1208 #define KEEPS_tb                       214     /*      0x0d6 */
1209 #define KEEPS_t8                       215     /*      0x0d7 */
1210 #define KEEPS_tb_pb                       428  /*      0x1ac */
1211 #define KEEPS_tb_p8                       429  /*      0x1ad */
1212 #define KEEPS_t8_pb                       430  /*      0x1ae */
1213 #define KEEPS_t8_p8                       431  /*      0x1af */
1214
1215 #define LOOKBEHIND_END              108        /* 0x6c Return from lookbehind
1216                                                   (IFMATCH/UNLESSM) and
1217                                                   validate position */
1218 #define LOOKBEHIND_END_tb              216     /*      0x0d8 */
1219 #define LOOKBEHIND_END_t8              217     /*      0x0d9 */
1220 #define LOOKBEHIND_END_tb_pb              432  /*      0x1b0 */
1221 #define LOOKBEHIND_END_tb_p8              433  /*      0x1b1 */
1222 #define LOOKBEHIND_END_t8_pb              434  /*      0x1b2 */
1223 #define LOOKBEHIND_END_t8_p8              435  /*      0x1b3 */
1224
1225 #define OPTIMIZED                   109        /* 0x6d Placeholder for dump.
1226                                                */
1227 #define OPTIMIZED_tb                   218     /*      0x0da */
1228 #define OPTIMIZED_t8                   219     /*      0x0db */
1229 #define OPTIMIZED_tb_pb                   436  /*      0x1b4 */
1230 #define OPTIMIZED_tb_p8                   437  /*      0x1b5 */
1231 #define OPTIMIZED_t8_pb                   438  /*      0x1b6 */
1232 #define OPTIMIZED_t8_p8                   439  /*      0x1b7 */
1233
1234 #define PSEUDO                      110        /* 0x6e Pseudo opcode for
1235                                                   internal use. */
1236 #define PSEUDO_tb                      220     /*      0x0dc */
1237 #define PSEUDO_t8                      221     /*      0x0dd */
1238 #define PSEUDO_tb_pb                      440  /*      0x1b8 */
1239 #define PSEUDO_tb_p8                      441  /*      0x1b9 */
1240 #define PSEUDO_t8_pb                      442  /*      0x1ba */
1241 #define PSEUDO_t8_p8                      443  /*      0x1bb */
1242
1243 #define REGEX_SET                   111        /* 0x6f Regex set, temporary
1244                                                   node used in
1245                                                   pre-optimization compilation
1246                                                */
1247 #define REGEX_SET_tb                   222     /*      0x0de */
1248 #define REGEX_SET_t8                   223     /*      0x0df */
1249 #define REGEX_SET_tb_pb                   444  /*      0x1bc */
1250 #define REGEX_SET_tb_p8                   445  /*      0x1bd */
1251 #define REGEX_SET_t8_pb                   446  /*      0x1be */
1252 #define REGEX_SET_t8_p8                   447  /*      0x1bf */
1253
1254         /* ------------ States ------------- */
1255 #define TRIE_next                   112        /* 0x70 state for TRIE */
1256 #define TRIE_next_tb                   224     /*      0x0e0 */
1257 #define TRIE_next_t8                   225     /*      0x0e1 */
1258 #define TRIE_next_tb_pb                   448  /*      0x1c0 */
1259 #define TRIE_next_tb_p8                   449  /*      0x1c1 */
1260 #define TRIE_next_t8_pb                   450  /*      0x1c2 */
1261 #define TRIE_next_t8_p8                   451  /*      0x1c3 */
1262
1263 #define TRIE_next_fail              113        /* 0x71 state for TRIE */
1264 #define TRIE_next_fail_tb              226     /*      0x0e2 */
1265 #define TRIE_next_fail_t8              227     /*      0x0e3 */
1266 #define TRIE_next_fail_tb_pb              452  /*      0x1c4 */
1267 #define TRIE_next_fail_tb_p8              453  /*      0x1c5 */
1268 #define TRIE_next_fail_t8_pb              454  /*      0x1c6 */
1269 #define TRIE_next_fail_t8_p8              455  /*      0x1c7 */
1270
1271 #define EVAL_B                      114        /* 0x72 state for EVAL */
1272 #define EVAL_B_tb                      228     /*      0x0e4 */
1273 #define EVAL_B_t8                      229     /*      0x0e5 */
1274 #define EVAL_B_tb_pb                      456  /*      0x1c8 */
1275 #define EVAL_B_tb_p8                      457  /*      0x1c9 */
1276 #define EVAL_B_t8_pb                      458  /*      0x1ca */
1277 #define EVAL_B_t8_p8                      459  /*      0x1cb */
1278
1279 #define EVAL_B_fail                 115        /* 0x73 state for EVAL */
1280 #define EVAL_B_fail_tb                 230     /*      0x0e6 */
1281 #define EVAL_B_fail_t8                 231     /*      0x0e7 */
1282 #define EVAL_B_fail_tb_pb                 460  /*      0x1cc */
1283 #define EVAL_B_fail_tb_p8                 461  /*      0x1cd */
1284 #define EVAL_B_fail_t8_pb                 462  /*      0x1ce */
1285 #define EVAL_B_fail_t8_p8                 463  /*      0x1cf */
1286
1287 #define EVAL_postponed_AB           116        /* 0x74 state for EVAL */
1288 #define EVAL_postponed_AB_tb           232     /*      0x0e8 */
1289 #define EVAL_postponed_AB_t8           233     /*      0x0e9 */
1290 #define EVAL_postponed_AB_tb_pb           464  /*      0x1d0 */
1291 #define EVAL_postponed_AB_tb_p8           465  /*      0x1d1 */
1292 #define EVAL_postponed_AB_t8_pb           466  /*      0x1d2 */
1293 #define EVAL_postponed_AB_t8_p8           467  /*      0x1d3 */
1294
1295 #define EVAL_postponed_AB_fail      117        /* 0x75 state for EVAL */
1296 #define EVAL_postponed_AB_fail_tb      234     /*      0x0ea */
1297 #define EVAL_postponed_AB_fail_t8      235     /*      0x0eb */
1298 #define EVAL_postponed_AB_fail_tb_pb      468  /*      0x1d4 */
1299 #define EVAL_postponed_AB_fail_tb_p8      469  /*      0x1d5 */
1300 #define EVAL_postponed_AB_fail_t8_pb      470  /*      0x1d6 */
1301 #define EVAL_postponed_AB_fail_t8_p8      471  /*      0x1d7 */
1302
1303 #define CURLYX_end                  118        /* 0x76 state for CURLYX */
1304 #define CURLYX_end_tb                  236     /*      0x0ec */
1305 #define CURLYX_end_t8                  237     /*      0x0ed */
1306 #define CURLYX_end_tb_pb                  472  /*      0x1d8 */
1307 #define CURLYX_end_tb_p8                  473  /*      0x1d9 */
1308 #define CURLYX_end_t8_pb                  474  /*      0x1da */
1309 #define CURLYX_end_t8_p8                  475  /*      0x1db */
1310
1311 #define CURLYX_end_fail             119        /* 0x77 state for CURLYX */
1312 #define CURLYX_end_fail_tb             238     /*      0x0ee */
1313 #define CURLYX_end_fail_t8             239     /*      0x0ef */
1314 #define CURLYX_end_fail_tb_pb             476  /*      0x1dc */
1315 #define CURLYX_end_fail_tb_p8             477  /*      0x1dd */
1316 #define CURLYX_end_fail_t8_pb             478  /*      0x1de */
1317 #define CURLYX_end_fail_t8_p8             479  /*      0x1df */
1318
1319 #define WHILEM_A_pre                120        /* 0x78 state for WHILEM */
1320 #define WHILEM_A_pre_tb                240     /*      0x0f0 */
1321 #define WHILEM_A_pre_t8                241     /*      0x0f1 */
1322 #define WHILEM_A_pre_tb_pb                480  /*      0x1e0 */
1323 #define WHILEM_A_pre_tb_p8                481  /*      0x1e1 */
1324 #define WHILEM_A_pre_t8_pb                482  /*      0x1e2 */
1325 #define WHILEM_A_pre_t8_p8                483  /*      0x1e3 */
1326
1327 #define WHILEM_A_pre_fail           121        /* 0x79 state for WHILEM */
1328 #define WHILEM_A_pre_fail_tb           242     /*      0x0f2 */
1329 #define WHILEM_A_pre_fail_t8           243     /*      0x0f3 */
1330 #define WHILEM_A_pre_fail_tb_pb           484  /*      0x1e4 */
1331 #define WHILEM_A_pre_fail_tb_p8           485  /*      0x1e5 */
1332 #define WHILEM_A_pre_fail_t8_pb           486  /*      0x1e6 */
1333 #define WHILEM_A_pre_fail_t8_p8           487  /*      0x1e7 */
1334
1335 #define WHILEM_A_min                122        /* 0x7a state for WHILEM */
1336 #define WHILEM_A_min_tb                244     /*      0x0f4 */
1337 #define WHILEM_A_min_t8                245     /*      0x0f5 */
1338 #define WHILEM_A_min_tb_pb                488  /*      0x1e8 */
1339 #define WHILEM_A_min_tb_p8                489  /*      0x1e9 */
1340 #define WHILEM_A_min_t8_pb                490  /*      0x1ea */
1341 #define WHILEM_A_min_t8_p8                491  /*      0x1eb */
1342
1343 #define WHILEM_A_min_fail           123        /* 0x7b state for WHILEM */
1344 #define WHILEM_A_min_fail_tb           246     /*      0x0f6 */
1345 #define WHILEM_A_min_fail_t8           247     /*      0x0f7 */
1346 #define WHILEM_A_min_fail_tb_pb           492  /*      0x1ec */
1347 #define WHILEM_A_min_fail_tb_p8           493  /*      0x1ed */
1348 #define WHILEM_A_min_fail_t8_pb           494  /*      0x1ee */
1349 #define WHILEM_A_min_fail_t8_p8           495  /*      0x1ef */
1350
1351 #define WHILEM_A_max                124        /* 0x7c state for WHILEM */
1352 #define WHILEM_A_max_tb                248     /*      0x0f8 */
1353 #define WHILEM_A_max_t8                249     /*      0x0f9 */
1354 #define WHILEM_A_max_tb_pb                496  /*      0x1f0 */
1355 #define WHILEM_A_max_tb_p8                497  /*      0x1f1 */
1356 #define WHILEM_A_max_t8_pb                498  /*      0x1f2 */
1357 #define WHILEM_A_max_t8_p8                499  /*      0x1f3 */
1358
1359 #define WHILEM_A_max_fail           125        /* 0x7d state for WHILEM */
1360 #define WHILEM_A_max_fail_tb           250     /*      0x0fa */
1361 #define WHILEM_A_max_fail_t8           251     /*      0x0fb */
1362 #define WHILEM_A_max_fail_tb_pb           500  /*      0x1f4 */
1363 #define WHILEM_A_max_fail_tb_p8           501  /*      0x1f5 */
1364 #define WHILEM_A_max_fail_t8_pb           502  /*      0x1f6 */
1365 #define WHILEM_A_max_fail_t8_p8           503  /*      0x1f7 */
1366
1367 #define WHILEM_B_min                126        /* 0x7e state for WHILEM */
1368 #define WHILEM_B_min_tb                252     /*      0x0fc */
1369 #define WHILEM_B_min_t8                253     /*      0x0fd */
1370 #define WHILEM_B_min_tb_pb                504  /*      0x1f8 */
1371 #define WHILEM_B_min_tb_p8                505  /*      0x1f9 */
1372 #define WHILEM_B_min_t8_pb                506  /*      0x1fa */
1373 #define WHILEM_B_min_t8_p8                507  /*      0x1fb */
1374
1375 #define WHILEM_B_min_fail           127        /* 0x7f state for WHILEM */
1376 #define WHILEM_B_min_fail_tb           254     /*      0x0fe */
1377 #define WHILEM_B_min_fail_t8           255     /*      0x0ff */
1378 #define WHILEM_B_min_fail_tb_pb           508  /*      0x1fc */
1379 #define WHILEM_B_min_fail_tb_p8           509  /*      0x1fd */
1380 #define WHILEM_B_min_fail_t8_pb           510  /*      0x1fe */
1381 #define WHILEM_B_min_fail_t8_p8           511  /*      0x1ff */
1382
1383 #define WHILEM_B_max                128        /* 0x80 state for WHILEM */
1384 #define WHILEM_B_max_tb                256     /*      0x100 */
1385 #define WHILEM_B_max_t8                257     /*      0x101 */
1386 #define WHILEM_B_max_tb_pb                512  /*      0x200 */
1387 #define WHILEM_B_max_tb_p8                513  /*      0x201 */
1388 #define WHILEM_B_max_t8_pb                514  /*      0x202 */
1389 #define WHILEM_B_max_t8_p8                515  /*      0x203 */
1390
1391 #define WHILEM_B_max_fail           129        /* 0x81 state for WHILEM */
1392 #define WHILEM_B_max_fail_tb           258     /*      0x102 */
1393 #define WHILEM_B_max_fail_t8           259     /*      0x103 */
1394 #define WHILEM_B_max_fail_tb_pb           516  /*      0x204 */
1395 #define WHILEM_B_max_fail_tb_p8           517  /*      0x205 */
1396 #define WHILEM_B_max_fail_t8_pb           518  /*      0x206 */
1397 #define WHILEM_B_max_fail_t8_p8           519  /*      0x207 */
1398
1399 #define BRANCH_next                 130        /* 0x82 state for BRANCH */
1400 #define BRANCH_next_tb                 260     /*      0x104 */
1401 #define BRANCH_next_t8                 261     /*      0x105 */
1402 #define BRANCH_next_tb_pb                 520  /*      0x208 */
1403 #define BRANCH_next_tb_p8                 521  /*      0x209 */
1404 #define BRANCH_next_t8_pb                 522  /*      0x20a */
1405 #define BRANCH_next_t8_p8                 523  /*      0x20b */
1406
1407 #define BRANCH_next_fail            131        /* 0x83 state for BRANCH */
1408 #define BRANCH_next_fail_tb            262     /*      0x106 */
1409 #define BRANCH_next_fail_t8            263     /*      0x107 */
1410 #define BRANCH_next_fail_tb_pb            524  /*      0x20c */
1411 #define BRANCH_next_fail_tb_p8            525  /*      0x20d */
1412 #define BRANCH_next_fail_t8_pb            526  /*      0x20e */
1413 #define BRANCH_next_fail_t8_p8            527  /*      0x20f */
1414
1415 #define CURLYM_A                    132        /* 0x84 state for CURLYM */
1416 #define CURLYM_A_tb                    264     /*      0x108 */
1417 #define CURLYM_A_t8                    265     /*      0x109 */
1418 #define CURLYM_A_tb_pb                    528  /*      0x210 */
1419 #define CURLYM_A_tb_p8                    529  /*      0x211 */
1420 #define CURLYM_A_t8_pb                    530  /*      0x212 */
1421 #define CURLYM_A_t8_p8                    531  /*      0x213 */
1422
1423 #define CURLYM_A_fail               133        /* 0x85 state for CURLYM */
1424 #define CURLYM_A_fail_tb               266     /*      0x10a */
1425 #define CURLYM_A_fail_t8               267     /*      0x10b */
1426 #define CURLYM_A_fail_tb_pb               532  /*      0x214 */
1427 #define CURLYM_A_fail_tb_p8               533  /*      0x215 */
1428 #define CURLYM_A_fail_t8_pb               534  /*      0x216 */
1429 #define CURLYM_A_fail_t8_p8               535  /*      0x217 */
1430
1431 #define CURLYM_B                    134        /* 0x86 state for CURLYM */
1432 #define CURLYM_B_tb                    268     /*      0x10c */
1433 #define CURLYM_B_t8                    269     /*      0x10d */
1434 #define CURLYM_B_tb_pb                    536  /*      0x218 */
1435 #define CURLYM_B_tb_p8                    537  /*      0x219 */
1436 #define CURLYM_B_t8_pb                    538  /*      0x21a */
1437 #define CURLYM_B_t8_p8                    539  /*      0x21b */
1438
1439 #define CURLYM_B_fail               135        /* 0x87 state for CURLYM */
1440 #define CURLYM_B_fail_tb               270     /*      0x10e */
1441 #define CURLYM_B_fail_t8               271     /*      0x10f */
1442 #define CURLYM_B_fail_tb_pb               540  /*      0x21c */
1443 #define CURLYM_B_fail_tb_p8               541  /*      0x21d */
1444 #define CURLYM_B_fail_t8_pb               542  /*      0x21e */
1445 #define CURLYM_B_fail_t8_p8               543  /*      0x21f */
1446
1447 #define IFMATCH_A                   136        /* 0x88 state for IFMATCH */
1448 #define IFMATCH_A_tb                   272     /*      0x110 */
1449 #define IFMATCH_A_t8                   273     /*      0x111 */
1450 #define IFMATCH_A_tb_pb                   544  /*      0x220 */
1451 #define IFMATCH_A_tb_p8                   545  /*      0x221 */
1452 #define IFMATCH_A_t8_pb                   546  /*      0x222 */
1453 #define IFMATCH_A_t8_p8                   547  /*      0x223 */
1454
1455 #define IFMATCH_A_fail              137        /* 0x89 state for IFMATCH */
1456 #define IFMATCH_A_fail_tb              274     /*      0x112 */
1457 #define IFMATCH_A_fail_t8              275     /*      0x113 */
1458 #define IFMATCH_A_fail_tb_pb              548  /*      0x224 */
1459 #define IFMATCH_A_fail_tb_p8              549  /*      0x225 */
1460 #define IFMATCH_A_fail_t8_pb              550  /*      0x226 */
1461 #define IFMATCH_A_fail_t8_p8              551  /*      0x227 */
1462
1463 #define CURLY_B_min                 138        /* 0x8a state for CURLY */
1464 #define CURLY_B_min_tb                 276     /*      0x114 */
1465 #define CURLY_B_min_t8                 277     /*      0x115 */
1466 #define CURLY_B_min_tb_pb                 552  /*      0x228 */
1467 #define CURLY_B_min_tb_p8                 553  /*      0x229 */
1468 #define CURLY_B_min_t8_pb                 554  /*      0x22a */
1469 #define CURLY_B_min_t8_p8                 555  /*      0x22b */
1470
1471 #define CURLY_B_min_fail            139        /* 0x8b state for CURLY */
1472 #define CURLY_B_min_fail_tb            278     /*      0x116 */
1473 #define CURLY_B_min_fail_t8            279     /*      0x117 */
1474 #define CURLY_B_min_fail_tb_pb            556  /*      0x22c */
1475 #define CURLY_B_min_fail_tb_p8            557  /*      0x22d */
1476 #define CURLY_B_min_fail_t8_pb            558  /*      0x22e */
1477 #define CURLY_B_min_fail_t8_p8            559  /*      0x22f */
1478
1479 #define CURLY_B_max                 140        /* 0x8c state for CURLY */
1480 #define CURLY_B_max_tb                 280     /*      0x118 */
1481 #define CURLY_B_max_t8                 281     /*      0x119 */
1482 #define CURLY_B_max_tb_pb                 560  /*      0x230 */
1483 #define CURLY_B_max_tb_p8                 561  /*      0x231 */
1484 #define CURLY_B_max_t8_pb                 562  /*      0x232 */
1485 #define CURLY_B_max_t8_p8                 563  /*      0x233 */
1486
1487 #define CURLY_B_max_fail            141        /* 0x8d state for CURLY */
1488 #define CURLY_B_max_fail_tb            282     /*      0x11a */
1489 #define CURLY_B_max_fail_t8            283     /*      0x11b */
1490 #define CURLY_B_max_fail_tb_pb            564  /*      0x234 */
1491 #define CURLY_B_max_fail_tb_p8            565  /*      0x235 */
1492 #define CURLY_B_max_fail_t8_pb            566  /*      0x236 */
1493 #define CURLY_B_max_fail_t8_p8            567  /*      0x237 */
1494
1495 #define COMMIT_next                 142        /* 0x8e state for COMMIT */
1496 #define COMMIT_next_tb                 284     /*      0x11c */
1497 #define COMMIT_next_t8                 285     /*      0x11d */
1498 #define COMMIT_next_tb_pb                 568  /*      0x238 */
1499 #define COMMIT_next_tb_p8                 569  /*      0x239 */
1500 #define COMMIT_next_t8_pb                 570  /*      0x23a */
1501 #define COMMIT_next_t8_p8                 571  /*      0x23b */
1502
1503 #define COMMIT_next_fail            143        /* 0x8f state for COMMIT */
1504 #define COMMIT_next_fail_tb            286     /*      0x11e */
1505 #define COMMIT_next_fail_t8            287     /*      0x11f */
1506 #define COMMIT_next_fail_tb_pb            572  /*      0x23c */
1507 #define COMMIT_next_fail_tb_p8            573  /*      0x23d */
1508 #define COMMIT_next_fail_t8_pb            574  /*      0x23e */
1509 #define COMMIT_next_fail_t8_p8            575  /*      0x23f */
1510
1511 #define MARKPOINT_next              144        /* 0x90 state for MARKPOINT */
1512 #define MARKPOINT_next_tb              288     /*      0x120 */
1513 #define MARKPOINT_next_t8              289     /*      0x121 */
1514 #define MARKPOINT_next_tb_pb              576  /*      0x240 */
1515 #define MARKPOINT_next_tb_p8              577  /*      0x241 */
1516 #define MARKPOINT_next_t8_pb              578  /*      0x242 */
1517 #define MARKPOINT_next_t8_p8              579  /*      0x243 */
1518
1519 #define MARKPOINT_next_fail         145        /* 0x91 state for MARKPOINT */
1520 #define MARKPOINT_next_fail_tb         290     /*      0x122 */
1521 #define MARKPOINT_next_fail_t8         291     /*      0x123 */
1522 #define MARKPOINT_next_fail_tb_pb         580  /*      0x244 */
1523 #define MARKPOINT_next_fail_tb_p8         581  /*      0x245 */
1524 #define MARKPOINT_next_fail_t8_pb         582  /*      0x246 */
1525 #define MARKPOINT_next_fail_t8_p8         583  /*      0x247 */
1526
1527 #define SKIP_next                   146        /* 0x92 state for SKIP */
1528 #define SKIP_next_tb                   292     /*      0x124 */
1529 #define SKIP_next_t8                   293     /*      0x125 */
1530 #define SKIP_next_tb_pb                   584  /*      0x248 */
1531 #define SKIP_next_tb_p8                   585  /*      0x249 */
1532 #define SKIP_next_t8_pb                   586  /*      0x24a */
1533 #define SKIP_next_t8_p8                   587  /*      0x24b */
1534
1535 #define SKIP_next_fail              147        /* 0x93 state for SKIP */
1536 #define SKIP_next_fail_tb              294     /*      0x126 */
1537 #define SKIP_next_fail_t8              295     /*      0x127 */
1538 #define SKIP_next_fail_tb_pb              588  /*      0x24c */
1539 #define SKIP_next_fail_tb_p8              589  /*      0x24d */
1540 #define SKIP_next_fail_t8_pb              590  /*      0x24e */
1541 #define SKIP_next_fail_t8_p8              591  /*      0x24f */
1542
1543 #define CUTGROUP_next               148        /* 0x94 state for CUTGROUP */
1544 #define CUTGROUP_next_tb               296     /*      0x128 */
1545 #define CUTGROUP_next_t8               297     /*      0x129 */
1546 #define CUTGROUP_next_tb_pb               592  /*      0x250 */
1547 #define CUTGROUP_next_tb_p8               593  /*      0x251 */
1548 #define CUTGROUP_next_t8_pb               594  /*      0x252 */
1549 #define CUTGROUP_next_t8_p8               595  /*      0x253 */
1550
1551 #define CUTGROUP_next_fail          149        /* 0x95 state for CUTGROUP */
1552 #define CUTGROUP_next_fail_tb          298     /*      0x12a */
1553 #define CUTGROUP_next_fail_t8          299     /*      0x12b */
1554 #define CUTGROUP_next_fail_tb_pb          596  /*      0x254 */
1555 #define CUTGROUP_next_fail_tb_p8          597  /*      0x255 */
1556 #define CUTGROUP_next_fail_t8_pb          598  /*      0x256 */
1557 #define CUTGROUP_next_fail_t8_p8          599  /*      0x257 */
1558
1559 #define KEEPS_next                  150        /* 0x96 state for KEEPS */
1560 #define KEEPS_next_tb                  300     /*      0x12c */
1561 #define KEEPS_next_t8                  301     /*      0x12d */
1562 #define KEEPS_next_tb_pb                  600  /*      0x258 */
1563 #define KEEPS_next_tb_p8                  601  /*      0x259 */
1564 #define KEEPS_next_t8_pb                  602  /*      0x25a */
1565 #define KEEPS_next_t8_p8                  603  /*      0x25b */
1566
1567 #define KEEPS_next_fail             151        /* 0x97 state for KEEPS */
1568 #define KEEPS_next_fail_tb             302     /*      0x12e */
1569 #define KEEPS_next_fail_t8             303     /*      0x12f */
1570 #define KEEPS_next_fail_tb_pb             604  /*      0x25c */
1571 #define KEEPS_next_fail_tb_p8             605  /*      0x25d */
1572 #define KEEPS_next_fail_t8_pb             606  /*      0x25e */
1573 #define KEEPS_next_fail_t8_p8             607  /*      0x25f */
1574
1575
1576 /* PL_regnode_name[] - Opcode/state names in string form, for debugging */
1577
1578 #ifndef DOINIT
1579 EXTCONST char * PL_regnode_name[];
1580 #else
1581 EXTCONST char * const PL_regnode_name[] = {
1582         "END",                          /* 0000 */
1583         "SUCCEED",                      /* 0x01 */
1584         "SBOL",                         /* 0x02 */
1585         "MBOL",                         /* 0x03 */
1586         "SEOL",                         /* 0x04 */
1587         "MEOL",                         /* 0x05 */
1588         "EOS",                          /* 0x06 */
1589         "GPOS",                         /* 0x07 */
1590         "BOUND",                        /* 0x08 */
1591         "BOUNDL",                       /* 0x09 */
1592         "BOUNDU",                       /* 0x0a */
1593         "BOUNDA",                       /* 0x0b */
1594         "NBOUND",                       /* 0x0c */
1595         "NBOUNDL",                      /* 0x0d */
1596         "NBOUNDU",                      /* 0x0e */
1597         "NBOUNDA",                      /* 0x0f */
1598         "REG_ANY",                      /* 0x10 */
1599         "SANY",                         /* 0x11 */
1600         "ANYOF",                        /* 0x12 */
1601         "ANYOFD",                       /* 0x13 */
1602         "ANYOFL",                       /* 0x14 */
1603         "ANYOFPOSIXL",                  /* 0x15 */
1604         "ANYOFH",                       /* 0x16 */
1605         "ANYOFHb",                      /* 0x17 */
1606         "ANYOFHr",                      /* 0x18 */
1607         "ANYOFHs",                      /* 0x19 */
1608         "ANYOFR",                       /* 0x1a */
1609         "ANYOFRb",                      /* 0x1b */
1610         "ANYOFHbbm",                    /* 0x1c */
1611         "ANYOFM",                       /* 0x1d */
1612         "NANYOFM",                      /* 0x1e */
1613         "POSIXD",                       /* 0x1f */
1614         "POSIXL",                       /* 0x20 */
1615         "POSIXU",                       /* 0x21 */
1616         "POSIXA",                       /* 0x22 */
1617         "NPOSIXD",                      /* 0x23 */
1618         "NPOSIXL",                      /* 0x24 */
1619         "NPOSIXU",                      /* 0x25 */
1620         "NPOSIXA",                      /* 0x26 */
1621         "CLUMP",                        /* 0x27 */
1622         "BRANCH",                       /* 0x28 */
1623         "EXACT",                        /* 0x29 */
1624         "LEXACT",                       /* 0x2a */
1625         "EXACTL",                       /* 0x2b */
1626         "EXACTF",                       /* 0x2c */
1627         "EXACTFL",                      /* 0x2d */
1628         "EXACTFU",                      /* 0x2e */
1629         "EXACTFAA",                     /* 0x2f */
1630         "EXACTFAA_NO_TRIE",             /* 0x30 */
1631         "EXACTFUP",                     /* 0x31 */
1632         "EXACTFLU8",                    /* 0x32 */
1633         "EXACT_REQ8",                   /* 0x33 */
1634         "LEXACT_REQ8",                  /* 0x34 */
1635         "EXACTFU_REQ8",                 /* 0x35 */
1636         "EXACTFU_S_EDGE",               /* 0x36 */
1637         "LNBREAK",                      /* 0x37 */
1638         "TRIE",                         /* 0x38 */
1639         "TRIEC",                        /* 0x39 */
1640         "AHOCORASICK",                  /* 0x3a */
1641         "AHOCORASICKC",                 /* 0x3b */
1642         "NOTHING",                      /* 0x3c */
1643         "TAIL",                         /* 0x3d */
1644         "STAR",                         /* 0x3e */
1645         "PLUS",                         /* 0x3f */
1646         "CURLY",                        /* 0x40 */
1647         "CURLYN",                       /* 0x41 */
1648         "CURLYM",                       /* 0x42 */
1649         "CURLYX",                       /* 0x43 */
1650         "WHILEM",                       /* 0x44 */
1651         "OPEN",                         /* 0x45 */
1652         "CLOSE",                        /* 0x46 */
1653         "SROPEN",                       /* 0x47 */
1654         "SRCLOSE",                      /* 0x48 */
1655         "REF",                          /* 0x49 */
1656         "REFF",                         /* 0x4a */
1657         "REFFL",                        /* 0x4b */
1658         "REFFU",                        /* 0x4c */
1659         "REFFA",                        /* 0x4d */
1660         "REFN",                         /* 0x4e */
1661         "REFFN",                        /* 0x4f */
1662         "REFFLN",                       /* 0x50 */
1663         "REFFUN",                       /* 0x51 */
1664         "REFFAN",                       /* 0x52 */
1665         "LONGJMP",                      /* 0x53 */
1666         "BRANCHJ",                      /* 0x54 */
1667         "IFMATCH",                      /* 0x55 */
1668         "UNLESSM",                      /* 0x56 */
1669         "SUSPEND",                      /* 0x57 */
1670         "IFTHEN",                       /* 0x58 */
1671         "GROUPP",                       /* 0x59 */
1672         "EVAL",                         /* 0x5a */
1673         "MINMOD",                       /* 0x5b */
1674         "LOGICAL",                      /* 0x5c */
1675         "RENUM",                        /* 0x5d */
1676         "GOSUB",                        /* 0x5e */
1677         "GROUPPN",                      /* 0x5f */
1678         "INSUBP",                       /* 0x60 */
1679         "DEFINEP",                      /* 0x61 */
1680         "ENDLIKE",                      /* 0x62 */
1681         "OPFAIL",                       /* 0x63 */
1682         "ACCEPT",                       /* 0x64 */
1683         "VERB",                         /* 0x65 */
1684         "PRUNE",                        /* 0x66 */
1685         "MARKPOINT",                    /* 0x67 */
1686         "SKIP",                         /* 0x68 */
1687         "COMMIT",                       /* 0x69 */
1688         "CUTGROUP",                     /* 0x6a */
1689         "KEEPS",                        /* 0x6b */
1690         "LOOKBEHIND_END",               /* 0x6c */
1691         "OPTIMIZED",                    /* 0x6d */
1692         "PSEUDO",                       /* 0x6e */
1693         "REGEX_SET",                    /* 0x6f */
1694         /* ------------ States ------------- */
1695         "TRIE_next",                    /* REGNODE_MAX +0x01 */
1696         "TRIE_next_fail",               /* REGNODE_MAX +0x02 */
1697         "EVAL_B",                       /* REGNODE_MAX +0x03 */
1698         "EVAL_B_fail",                  /* REGNODE_MAX +0x04 */
1699         "EVAL_postponed_AB",            /* REGNODE_MAX +0x05 */
1700         "EVAL_postponed_AB_fail",       /* REGNODE_MAX +0x06 */
1701         "CURLYX_end",                   /* REGNODE_MAX +0x07 */
1702         "CURLYX_end_fail",              /* REGNODE_MAX +0x08 */
1703         "WHILEM_A_pre",                 /* REGNODE_MAX +0x09 */
1704         "WHILEM_A_pre_fail",            /* REGNODE_MAX +0x0a */
1705         "WHILEM_A_min",                 /* REGNODE_MAX +0x0b */
1706         "WHILEM_A_min_fail",            /* REGNODE_MAX +0x0c */
1707         "WHILEM_A_max",                 /* REGNODE_MAX +0x0d */
1708         "WHILEM_A_max_fail",            /* REGNODE_MAX +0x0e */
1709         "WHILEM_B_min",                 /* REGNODE_MAX +0x0f */
1710         "WHILEM_B_min_fail",            /* REGNODE_MAX +0x10 */
1711         "WHILEM_B_max",                 /* REGNODE_MAX +0x11 */
1712         "WHILEM_B_max_fail",            /* REGNODE_MAX +0x12 */
1713         "BRANCH_next",                  /* REGNODE_MAX +0x13 */
1714         "BRANCH_next_fail",             /* REGNODE_MAX +0x14 */
1715         "CURLYM_A",                     /* REGNODE_MAX +0x15 */
1716         "CURLYM_A_fail",                /* REGNODE_MAX +0x16 */
1717         "CURLYM_B",                     /* REGNODE_MAX +0x17 */
1718         "CURLYM_B_fail",                /* REGNODE_MAX +0x18 */
1719         "IFMATCH_A",                    /* REGNODE_MAX +0x19 */
1720         "IFMATCH_A_fail",               /* REGNODE_MAX +0x1a */
1721         "CURLY_B_min",                  /* REGNODE_MAX +0x1b */
1722         "CURLY_B_min_fail",             /* REGNODE_MAX +0x1c */
1723         "CURLY_B_max",                  /* REGNODE_MAX +0x1d */
1724         "CURLY_B_max_fail",             /* REGNODE_MAX +0x1e */
1725         "COMMIT_next",                  /* REGNODE_MAX +0x1f */
1726         "COMMIT_next_fail",             /* REGNODE_MAX +0x20 */
1727         "MARKPOINT_next",               /* REGNODE_MAX +0x21 */
1728         "MARKPOINT_next_fail",          /* REGNODE_MAX +0x22 */
1729         "SKIP_next",                    /* REGNODE_MAX +0x23 */
1730         "SKIP_next_fail",               /* REGNODE_MAX +0x24 */
1731         "CUTGROUP_next",                /* REGNODE_MAX +0x25 */
1732         "CUTGROUP_next_fail",           /* REGNODE_MAX +0x26 */
1733         "KEEPS_next",                   /* REGNODE_MAX +0x27 */
1734         "KEEPS_next_fail",              /* REGNODE_MAX +0x28 */
1735 };
1736 #endif /* DOINIT */
1737
1738
1739 /* PL_regnode_info[] - Opcode/state names in string form, for debugging */
1740
1741 #ifndef DOINIT
1742 EXTCONST struct regnode_meta PL_regnode_info[];
1743 #else
1744 EXTCONST struct regnode_meta PL_regnode_info[] = {
1745     {
1746         /* #0 op END */
1747         .type = END,
1748         .arg_len = 0,
1749         .arg_len_varies = 0,
1750         .off_by_arg = 0
1751     },
1752     {
1753         /* #1 op SUCCEED */
1754         .type = END,
1755         .arg_len = 0,
1756         .arg_len_varies = 0,
1757         .off_by_arg = 0
1758     },
1759     {
1760         /* #2 op SBOL */
1761         .type = BOL,
1762         .arg_len = 0,
1763         .arg_len_varies = 0,
1764         .off_by_arg = 0
1765     },
1766     {
1767         /* #3 op MBOL */
1768         .type = BOL,
1769         .arg_len = 0,
1770         .arg_len_varies = 0,
1771         .off_by_arg = 0
1772     },
1773     {
1774         /* #4 op SEOL */
1775         .type = EOL,
1776         .arg_len = 0,
1777         .arg_len_varies = 0,
1778         .off_by_arg = 0
1779     },
1780     {
1781         /* #5 op MEOL */
1782         .type = EOL,
1783         .arg_len = 0,
1784         .arg_len_varies = 0,
1785         .off_by_arg = 0
1786     },
1787     {
1788         /* #6 op EOS */
1789         .type = EOL,
1790         .arg_len = 0,
1791         .arg_len_varies = 0,
1792         .off_by_arg = 0
1793     },
1794     {
1795         /* #7 op GPOS */
1796         .type = GPOS,
1797         .arg_len = 0,
1798         .arg_len_varies = 0,
1799         .off_by_arg = 0
1800     },
1801     {
1802         /* #8 op BOUND */
1803         .type = BOUND,
1804         .arg_len = 0,
1805         .arg_len_varies = 0,
1806         .off_by_arg = 0
1807     },
1808     {
1809         /* #9 op BOUNDL */
1810         .type = BOUND,
1811         .arg_len = 0,
1812         .arg_len_varies = 0,
1813         .off_by_arg = 0
1814     },
1815     {
1816         /* #10 op BOUNDU */
1817         .type = BOUND,
1818         .arg_len = 0,
1819         .arg_len_varies = 0,
1820         .off_by_arg = 0
1821     },
1822     {
1823         /* #11 op BOUNDA */
1824         .type = BOUND,
1825         .arg_len = 0,
1826         .arg_len_varies = 0,
1827         .off_by_arg = 0
1828     },
1829     {
1830         /* #12 op NBOUND */
1831         .type = NBOUND,
1832         .arg_len = 0,
1833         .arg_len_varies = 0,
1834         .off_by_arg = 0
1835     },
1836     {
1837         /* #13 op NBOUNDL */
1838         .type = NBOUND,
1839         .arg_len = 0,
1840         .arg_len_varies = 0,
1841         .off_by_arg = 0
1842     },
1843     {
1844         /* #14 op NBOUNDU */
1845         .type = NBOUND,
1846         .arg_len = 0,
1847         .arg_len_varies = 0,
1848         .off_by_arg = 0
1849     },
1850     {
1851         /* #15 op NBOUNDA */
1852         .type = NBOUND,
1853         .arg_len = 0,
1854         .arg_len_varies = 0,
1855         .off_by_arg = 0
1856     },
1857     {
1858         /* #16 op REG_ANY */
1859         .type = REG_ANY,
1860         .arg_len = 0,
1861         .arg_len_varies = 0,
1862         .off_by_arg = 0
1863     },
1864     {
1865         /* #17 op SANY */
1866         .type = REG_ANY,
1867         .arg_len = 0,
1868         .arg_len_varies = 0,
1869         .off_by_arg = 0
1870     },
1871     {
1872         /* #18 op ANYOF */
1873         .type = ANYOF,
1874         .arg_len = EXTRA_SIZE(tregnode_ANYOF),
1875         .arg_len_varies = 0,
1876         .off_by_arg = 0
1877     },
1878     {
1879         /* #19 op ANYOFD */
1880         .type = ANYOF,
1881         .arg_len = EXTRA_SIZE(tregnode_ANYOFD),
1882         .arg_len_varies = 0,
1883         .off_by_arg = 0
1884     },
1885     {
1886         /* #20 op ANYOFL */
1887         .type = ANYOF,
1888         .arg_len = EXTRA_SIZE(tregnode_ANYOFL),
1889         .arg_len_varies = 0,
1890         .off_by_arg = 0
1891     },
1892     {
1893         /* #21 op ANYOFPOSIXL */
1894         .type = ANYOF,
1895         .arg_len = EXTRA_SIZE(tregnode_ANYOFPOSIXL),
1896         .arg_len_varies = 0,
1897         .off_by_arg = 0
1898     },
1899     {
1900         /* #22 op ANYOFH */
1901         .type = ANYOFH,
1902         .arg_len = EXTRA_SIZE(tregnode_ANYOFH),
1903         .arg_len_varies = 0,
1904         .off_by_arg = 0
1905     },
1906     {
1907         /* #23 op ANYOFHb */
1908         .type = ANYOFH,
1909         .arg_len = EXTRA_SIZE(tregnode_ANYOFHb),
1910         .arg_len_varies = 0,
1911         .off_by_arg = 0
1912     },
1913     {
1914         /* #24 op ANYOFHr */
1915         .type = ANYOFH,
1916         .arg_len = EXTRA_SIZE(tregnode_ANYOFHr),
1917         .arg_len_varies = 0,
1918         .off_by_arg = 0
1919     },
1920     {
1921         /* #25 op ANYOFHs */
1922         .type = ANYOFH,
1923         .arg_len = EXTRA_SIZE(tregnode_ANYOFHs),
1924         .arg_len_varies = 1,
1925         .off_by_arg = 0
1926     },
1927     {
1928         /* #26 op ANYOFR */
1929         .type = ANYOFR,
1930         .arg_len = EXTRA_SIZE(tregnode_ANYOFR),
1931         .arg_len_varies = 0,
1932         .off_by_arg = 0
1933     },
1934     {
1935         /* #27 op ANYOFRb */
1936         .type = ANYOFR,
1937         .arg_len = EXTRA_SIZE(tregnode_ANYOFRb),
1938         .arg_len_varies = 0,
1939         .off_by_arg = 0
1940     },
1941     {
1942         /* #28 op ANYOFHbbm */
1943         .type = ANYOFHbbm,
1944         .arg_len = EXTRA_SIZE(tregnode_ANYOFHbbm),
1945         .arg_len_varies = 0,
1946         .off_by_arg = 0
1947     },
1948     {
1949         /* #29 op ANYOFM */
1950         .type = ANYOFM,
1951         .arg_len = EXTRA_SIZE(tregnode_ANYOFM),
1952         .arg_len_varies = 0,
1953         .off_by_arg = 0
1954     },
1955     {
1956         /* #30 op NANYOFM */
1957         .type = ANYOFM,
1958         .arg_len = EXTRA_SIZE(tregnode_NANYOFM),
1959         .arg_len_varies = 0,
1960         .off_by_arg = 0
1961     },
1962     {
1963         /* #31 op POSIXD */
1964         .type = POSIXD,
1965         .arg_len = 0,
1966         .arg_len_varies = 0,
1967         .off_by_arg = 0
1968     },
1969     {
1970         /* #32 op POSIXL */
1971         .type = POSIXD,
1972         .arg_len = 0,
1973         .arg_len_varies = 0,
1974         .off_by_arg = 0
1975     },
1976     {
1977         /* #33 op POSIXU */
1978         .type = POSIXD,
1979         .arg_len = 0,
1980         .arg_len_varies = 0,
1981         .off_by_arg = 0
1982     },
1983     {
1984         /* #34 op POSIXA */
1985         .type = POSIXD,
1986         .arg_len = 0,
1987         .arg_len_varies = 0,
1988         .off_by_arg = 0
1989     },
1990     {
1991         /* #35 op NPOSIXD */
1992         .type = NPOSIXD,
1993         .arg_len = 0,
1994         .arg_len_varies = 0,
1995         .off_by_arg = 0
1996     },
1997     {
1998         /* #36 op NPOSIXL */
1999         .type = NPOSIXD,
2000         .arg_len = 0,
2001         .arg_len_varies = 0,
2002         .off_by_arg = 0
2003     },
2004     {
2005         /* #37 op NPOSIXU */
2006         .type = NPOSIXD,
2007         .arg_len = 0,
2008         .arg_len_varies = 0,
2009         .off_by_arg = 0
2010     },
2011     {
2012         /* #38 op NPOSIXA */
2013         .type = NPOSIXD,
2014         .arg_len = 0,
2015         .arg_len_varies = 0,
2016         .off_by_arg = 0
2017     },
2018     {
2019         /* #39 op CLUMP */
2020         .type = CLUMP,
2021         .arg_len = 0,
2022         .arg_len_varies = 0,
2023         .off_by_arg = 0
2024     },
2025     {
2026         /* #40 op BRANCH */
2027         .type = BRANCH,
2028         .arg_len = 0,
2029         .arg_len_varies = 0,
2030         .off_by_arg = 0
2031     },
2032     {
2033         /* #41 op EXACT */
2034         .type = EXACT,
2035         .arg_len = 0,
2036         .arg_len_varies = 1,
2037         .off_by_arg = 0
2038     },
2039     {
2040         /* #42 op LEXACT */
2041         .type = EXACT,
2042         .arg_len = EXTRA_SIZE(tregnode_LEXACT),
2043         .arg_len_varies = 1,
2044         .off_by_arg = 0
2045     },
2046     {
2047         /* #43 op EXACTL */
2048         .type = EXACT,
2049         .arg_len = 0,
2050         .arg_len_varies = 1,
2051         .off_by_arg = 0
2052     },
2053     {
2054         /* #44 op EXACTF */
2055         .type = EXACT,
2056         .arg_len = 0,
2057         .arg_len_varies = 1,
2058         .off_by_arg = 0
2059     },
2060     {
2061         /* #45 op EXACTFL */
2062         .type = EXACT,
2063         .arg_len = 0,
2064         .arg_len_varies = 1,
2065         .off_by_arg = 0
2066     },
2067     {
2068         /* #46 op EXACTFU */
2069         .type = EXACT,
2070         .arg_len = 0,
2071         .arg_len_varies = 1,
2072         .off_by_arg = 0
2073     },
2074     {
2075         /* #47 op EXACTFAA */
2076         .type = EXACT,
2077         .arg_len = 0,
2078         .arg_len_varies = 1,
2079         .off_by_arg = 0
2080     },
2081     {
2082         /* #48 op EXACTFAA_NO_TRIE */
2083         .type = EXACT,
2084         .arg_len = 0,
2085         .arg_len_varies = 1,
2086         .off_by_arg = 0
2087     },
2088     {
2089         /* #49 op EXACTFUP */
2090         .type = EXACT,
2091         .arg_len = 0,
2092         .arg_len_varies = 1,
2093         .off_by_arg = 0
2094     },
2095     {
2096         /* #50 op EXACTFLU8 */
2097         .type = EXACT,
2098         .arg_len = 0,
2099         .arg_len_varies = 1,
2100         .off_by_arg = 0
2101     },
2102     {
2103         /* #51 op EXACT_REQ8 */
2104         .type = EXACT,
2105         .arg_len = 0,
2106         .arg_len_varies = 1,
2107         .off_by_arg = 0
2108     },
2109     {
2110         /* #52 op LEXACT_REQ8 */
2111         .type = EXACT,
2112         .arg_len = EXTRA_SIZE(tregnode_LEXACT_REQ8),
2113         .arg_len_varies = 1,
2114         .off_by_arg = 0
2115     },
2116     {
2117         /* #53 op EXACTFU_REQ8 */
2118         .type = EXACT,
2119         .arg_len = 0,
2120         .arg_len_varies = 1,
2121         .off_by_arg = 0
2122     },
2123     {
2124         /* #54 op EXACTFU_S_EDGE */
2125         .type = EXACT,
2126         .arg_len = 0,
2127         .arg_len_varies = 1,
2128         .off_by_arg = 0
2129     },
2130     {
2131         /* #55 op LNBREAK */
2132         .type = LNBREAK,
2133         .arg_len = 0,
2134         .arg_len_varies = 0,
2135         .off_by_arg = 0
2136     },
2137     {
2138         /* #56 op TRIE */
2139         .type = TRIE,
2140         .arg_len = EXTRA_SIZE(tregnode_TRIE),
2141         .arg_len_varies = 0,
2142         .off_by_arg = 0
2143     },
2144     {
2145         /* #57 op TRIEC */
2146         .type = TRIE,
2147         .arg_len = EXTRA_SIZE(tregnode_TRIEC),
2148         .arg_len_varies = 0,
2149         .off_by_arg = 0
2150     },
2151     {
2152         /* #58 op AHOCORASICK */
2153         .type = TRIE,
2154         .arg_len = EXTRA_SIZE(tregnode_AHOCORASICK),
2155         .arg_len_varies = 0,
2156         .off_by_arg = 0
2157     },
2158     {
2159         /* #59 op AHOCORASICKC */
2160         .type = TRIE,
2161         .arg_len = EXTRA_SIZE(tregnode_AHOCORASICKC),
2162         .arg_len_varies = 0,
2163         .off_by_arg = 0
2164     },
2165     {
2166         /* #60 op NOTHING */
2167         .type = NOTHING,
2168         .arg_len = 0,
2169         .arg_len_varies = 0,
2170         .off_by_arg = 0
2171     },
2172     {
2173         /* #61 op TAIL */
2174         .type = NOTHING,
2175         .arg_len = 0,
2176         .arg_len_varies = 0,
2177         .off_by_arg = 0
2178     },
2179     {
2180         /* #62 op STAR */
2181         .type = STAR,
2182         .arg_len = 0,
2183         .arg_len_varies = 0,
2184         .off_by_arg = 0
2185     },
2186     {
2187         /* #63 op PLUS */
2188         .type = PLUS,
2189         .arg_len = 0,
2190         .arg_len_varies = 0,
2191         .off_by_arg = 0
2192     },
2193     {
2194         /* #64 op CURLY */
2195         .type = CURLY,
2196         .arg_len = EXTRA_SIZE(tregnode_CURLY),
2197         .arg_len_varies = 0,
2198         .off_by_arg = 0
2199     },
2200     {
2201         /* #65 op CURLYN */
2202         .type = CURLY,
2203         .arg_len = EXTRA_SIZE(tregnode_CURLYN),
2204         .arg_len_varies = 0,
2205         .off_by_arg = 0
2206     },
2207     {
2208         /* #66 op CURLYM */
2209         .type = CURLY,
2210         .arg_len = EXTRA_SIZE(tregnode_CURLYM),
2211         .arg_len_varies = 0,
2212         .off_by_arg = 0
2213     },
2214     {
2215         /* #67 op CURLYX */
2216         .type = CURLY,
2217         .arg_len = EXTRA_SIZE(tregnode_CURLYX),
2218         .arg_len_varies = 0,
2219         .off_by_arg = 0
2220     },
2221     {
2222         /* #68 op WHILEM */
2223         .type = WHILEM,
2224         .arg_len = 0,
2225         .arg_len_varies = 0,
2226         .off_by_arg = 0
2227     },
2228     {
2229         /* #69 op OPEN */
2230         .type = OPEN,
2231         .arg_len = EXTRA_SIZE(tregnode_OPEN),
2232         .arg_len_varies = 0,
2233         .off_by_arg = 0
2234     },
2235     {
2236         /* #70 op CLOSE */
2237         .type = CLOSE,
2238         .arg_len = EXTRA_SIZE(tregnode_CLOSE),
2239         .arg_len_varies = 0,
2240         .off_by_arg = 0
2241     },
2242     {
2243         /* #71 op SROPEN */
2244         .type = SROPEN,
2245         .arg_len = 0,
2246         .arg_len_varies = 0,
2247         .off_by_arg = 0
2248     },
2249     {
2250         /* #72 op SRCLOSE */
2251         .type = SRCLOSE,
2252         .arg_len = 0,
2253         .arg_len_varies = 0,
2254         .off_by_arg = 0
2255     },
2256     {
2257         /* #73 op REF */
2258         .type = REF,
2259         .arg_len = EXTRA_SIZE(tregnode_REF),
2260         .arg_len_varies = 0,
2261         .off_by_arg = 0
2262     },
2263     {
2264         /* #74 op REFF */
2265         .type = REF,
2266         .arg_len = EXTRA_SIZE(tregnode_REFF),
2267         .arg_len_varies = 0,
2268         .off_by_arg = 0
2269     },
2270     {
2271         /* #75 op REFFL */
2272         .type = REF,
2273         .arg_len = EXTRA_SIZE(tregnode_REFFL),
2274         .arg_len_varies = 0,
2275         .off_by_arg = 0
2276     },
2277     {
2278         /* #76 op REFFU */
2279         .type = REF,
2280         .arg_len = EXTRA_SIZE(tregnode_REFFU),
2281         .arg_len_varies = 0,
2282         .off_by_arg = 0
2283     },
2284     {
2285         /* #77 op REFFA */
2286         .type = REF,
2287         .arg_len = EXTRA_SIZE(tregnode_REFFA),
2288         .arg_len_varies = 0,
2289         .off_by_arg = 0
2290     },
2291     {
2292         /* #78 op REFN */
2293         .type = REF,
2294         .arg_len = EXTRA_SIZE(tregnode_REFN),
2295         .arg_len_varies = 0,
2296         .off_by_arg = 0
2297     },
2298     {
2299         /* #79 op REFFN */
2300         .type = REF,
2301         .arg_len = EXTRA_SIZE(tregnode_REFFN),
2302         .arg_len_varies = 0,
2303         .off_by_arg = 0
2304     },
2305     {
2306         /* #80 op REFFLN */
2307         .type = REF,
2308         .arg_len = EXTRA_SIZE(tregnode_REFFLN),
2309         .arg_len_varies = 0,
2310         .off_by_arg = 0
2311     },
2312     {
2313         /* #81 op REFFUN */
2314         .type = REF,
2315         .arg_len = EXTRA_SIZE(tregnode_REFFUN),
2316         .arg_len_varies = 0,
2317         .off_by_arg = 0
2318     },
2319     {
2320         /* #82 op REFFAN */
2321         .type = REF,
2322         .arg_len = EXTRA_SIZE(tregnode_REFFAN),
2323         .arg_len_varies = 0,
2324         .off_by_arg = 0
2325     },
2326     {
2327         /* #83 op LONGJMP */
2328         .type = LONGJMP,
2329         .arg_len = EXTRA_SIZE(tregnode_LONGJMP),
2330         .arg_len_varies = 0,
2331         .off_by_arg = 1
2332     },
2333     {
2334         /* #84 op BRANCHJ */
2335         .type = BRANCHJ,
2336         .arg_len = EXTRA_SIZE(tregnode_BRANCHJ),
2337         .arg_len_varies = 0,
2338         .off_by_arg = 1
2339     },
2340     {
2341         /* #85 op IFMATCH */
2342         .type = BRANCHJ,
2343         .arg_len = EXTRA_SIZE(tregnode_IFMATCH),
2344         .arg_len_varies = 0,
2345         .off_by_arg = 1
2346     },
2347     {
2348         /* #86 op UNLESSM */
2349         .type = BRANCHJ,
2350         .arg_len = EXTRA_SIZE(tregnode_UNLESSM),
2351         .arg_len_varies = 0,
2352         .off_by_arg = 1
2353     },
2354     {
2355         /* #87 op SUSPEND */
2356         .type = BRANCHJ,
2357         .arg_len = EXTRA_SIZE(tregnode_SUSPEND),
2358         .arg_len_varies = 0,
2359         .off_by_arg = 1
2360     },
2361     {
2362         /* #88 op IFTHEN */
2363         .type = BRANCHJ,
2364         .arg_len = EXTRA_SIZE(tregnode_IFTHEN),
2365         .arg_len_varies = 0,
2366         .off_by_arg = 1
2367     },
2368     {
2369         /* #89 op GROUPP */
2370         .type = GROUPP,
2371         .arg_len = EXTRA_SIZE(tregnode_GROUPP),
2372         .arg_len_varies = 0,
2373         .off_by_arg = 0
2374     },
2375     {
2376         /* #90 op EVAL */
2377         .type = EVAL,
2378         .arg_len = EXTRA_SIZE(tregnode_EVAL),
2379         .arg_len_varies = 0,
2380         .off_by_arg = 0
2381     },
2382     {
2383         /* #91 op MINMOD */
2384         .type = MINMOD,
2385         .arg_len = 0,
2386         .arg_len_varies = 0,
2387         .off_by_arg = 0
2388     },
2389     {
2390         /* #92 op LOGICAL */
2391         .type = LOGICAL,
2392         .arg_len = 0,
2393         .arg_len_varies = 0,
2394         .off_by_arg = 0
2395     },
2396     {
2397         /* #93 op RENUM */
2398         .type = BRANCHJ,
2399         .arg_len = EXTRA_SIZE(tregnode_RENUM),
2400         .arg_len_varies = 0,
2401         .off_by_arg = 1
2402     },
2403     {
2404         /* #94 op GOSUB */
2405         .type = GOSUB,
2406         .arg_len = EXTRA_SIZE(tregnode_GOSUB),
2407         .arg_len_varies = 0,
2408         .off_by_arg = 0
2409     },
2410     {
2411         /* #95 op GROUPPN */
2412         .type = GROUPPN,
2413         .arg_len = EXTRA_SIZE(tregnode_GROUPPN),
2414         .arg_len_varies = 0,
2415         .off_by_arg = 0
2416     },
2417     {
2418         /* #96 op INSUBP */
2419         .type = INSUBP,
2420         .arg_len = EXTRA_SIZE(tregnode_INSUBP),
2421         .arg_len_varies = 0,
2422         .off_by_arg = 0
2423     },
2424     {
2425         /* #97 op DEFINEP */
2426         .type = DEFINEP,
2427         .arg_len = EXTRA_SIZE(tregnode_DEFINEP),
2428         .arg_len_varies = 0,
2429         .off_by_arg = 0
2430     },
2431     {
2432         /* #98 op ENDLIKE */
2433         .type = ENDLIKE,
2434         .arg_len = 0,
2435         .arg_len_varies = 0,
2436         .off_by_arg = 0
2437     },
2438     {
2439         /* #99 op OPFAIL */
2440         .type = ENDLIKE,
2441         .arg_len = EXTRA_SIZE(tregnode_OPFAIL),
2442         .arg_len_varies = 0,
2443         .off_by_arg = 0
2444     },
2445     {
2446         /* #100 op ACCEPT */
2447         .type = ENDLIKE,
2448         .arg_len = EXTRA_SIZE(tregnode_ACCEPT),
2449         .arg_len_varies = 0,
2450         .off_by_arg = 0
2451     },
2452     {
2453         /* #101 op VERB */
2454         .type = VERB,
2455         .arg_len = EXTRA_SIZE(tregnode_VERB),
2456         .arg_len_varies = 0,
2457         .off_by_arg = 0
2458     },
2459     {
2460         /* #102 op PRUNE */
2461         .type = VERB,
2462         .arg_len = EXTRA_SIZE(tregnode_PRUNE),
2463         .arg_len_varies = 0,
2464         .off_by_arg = 0
2465     },
2466     {
2467         /* #103 op MARKPOINT */
2468         .type = VERB,
2469         .arg_len = EXTRA_SIZE(tregnode_MARKPOINT),
2470         .arg_len_varies = 0,
2471         .off_by_arg = 0
2472     },
2473     {
2474         /* #104 op SKIP */
2475         .type = VERB,
2476         .arg_len = EXTRA_SIZE(tregnode_SKIP),
2477         .arg_len_varies = 0,
2478         .off_by_arg = 0
2479     },
2480     {
2481         /* #105 op COMMIT */
2482         .type = VERB,
2483         .arg_len = EXTRA_SIZE(tregnode_COMMIT),
2484         .arg_len_varies = 0,
2485         .off_by_arg = 0
2486     },
2487     {
2488         /* #106 op CUTGROUP */
2489         .type = VERB,
2490         .arg_len = EXTRA_SIZE(tregnode_CUTGROUP),
2491         .arg_len_varies = 0,
2492         .off_by_arg = 0
2493     },
2494     {
2495         /* #107 op KEEPS */
2496         .type = KEEPS,
2497         .arg_len = 0,
2498         .arg_len_varies = 0,
2499         .off_by_arg = 0
2500     },
2501     {
2502         /* #108 op LOOKBEHIND_END */
2503         .type = END,
2504         .arg_len = 0,
2505         .arg_len_varies = 0,
2506         .off_by_arg = 0
2507     },
2508     {
2509         /* #109 op OPTIMIZED */
2510         .type = NOTHING,
2511         .arg_len = 0,
2512         .arg_len_varies = 0,
2513         .off_by_arg = 0
2514     },
2515     {
2516         /* #110 op PSEUDO */
2517         .type = PSEUDO,
2518         .arg_len = 0,
2519         .arg_len_varies = 0,
2520         .off_by_arg = 0
2521     },
2522     {
2523         /* #111 op REGEX_SET */
2524         .type = REGEX_SET,
2525         .arg_len = EXTRA_SIZE(tregnode_REGEX_SET),
2526         .arg_len_varies = 0,
2527         .off_by_arg = 0
2528     },
2529     {
2530         /* #112 state TRIE_next */
2531         .type = TRIE,
2532         .arg_len = 0,
2533         .arg_len_varies = 0,
2534         .off_by_arg = 0
2535     },
2536     {
2537         /* #113 state TRIE_next_fail */
2538         .type = TRIE,
2539         .arg_len = 0,
2540         .arg_len_varies = 0,
2541         .off_by_arg = 0
2542     },
2543     {
2544         /* #114 state EVAL_B */
2545         .type = EVAL,
2546         .arg_len = 0,
2547         .arg_len_varies = 0,
2548         .off_by_arg = 0
2549     },
2550     {
2551         /* #115 state EVAL_B_fail */
2552         .type = EVAL,
2553         .arg_len = 0,
2554         .arg_len_varies = 0,
2555         .off_by_arg = 0
2556     },
2557     {
2558         /* #116 state EVAL_postponed_AB */
2559         .type = EVAL,
2560         .arg_len = 0,
2561         .arg_len_varies = 0,
2562         .off_by_arg = 0
2563     },
2564     {
2565         /* #117 state EVAL_postponed_AB_fail */
2566         .type = EVAL,
2567         .arg_len = 0,
2568         .arg_len_varies = 0,
2569         .off_by_arg = 0
2570     },
2571     {
2572         /* #118 state CURLYX_end */
2573         .type = CURLYX,
2574         .arg_len = 0,
2575         .arg_len_varies = 0,
2576         .off_by_arg = 0
2577     },
2578     {
2579         /* #119 state CURLYX_end_fail */
2580         .type = CURLYX,
2581         .arg_len = 0,
2582         .arg_len_varies = 0,
2583         .off_by_arg = 0
2584     },
2585     {
2586         /* #120 state WHILEM_A_pre */
2587         .type = WHILEM,
2588         .arg_len = 0,
2589         .arg_len_varies = 0,
2590         .off_by_arg = 0
2591     },
2592     {
2593         /* #121 state WHILEM_A_pre_fail */
2594         .type = WHILEM,
2595         .arg_len = 0,
2596         .arg_len_varies = 0,
2597         .off_by_arg = 0
2598     },
2599     {
2600         /* #122 state WHILEM_A_min */
2601         .type = WHILEM,
2602         .arg_len = 0,
2603         .arg_len_varies = 0,
2604         .off_by_arg = 0
2605     },
2606     {
2607         /* #123 state WHILEM_A_min_fail */
2608         .type = WHILEM,
2609         .arg_len = 0,
2610         .arg_len_varies = 0,
2611         .off_by_arg = 0
2612     },
2613     {
2614         /* #124 state WHILEM_A_max */
2615         .type = WHILEM,
2616         .arg_len = 0,
2617         .arg_len_varies = 0,
2618         .off_by_arg = 0
2619     },
2620     {
2621         /* #125 state WHILEM_A_max_fail */
2622         .type = WHILEM,
2623         .arg_len = 0,
2624         .arg_len_varies = 0,
2625         .off_by_arg = 0
2626     },
2627     {
2628         /* #126 state WHILEM_B_min */
2629         .type = WHILEM,
2630         .arg_len = 0,
2631         .arg_len_varies = 0,
2632         .off_by_arg = 0
2633     },
2634     {
2635         /* #127 state WHILEM_B_min_fail */
2636         .type = WHILEM,
2637         .arg_len = 0,
2638         .arg_len_varies = 0,
2639         .off_by_arg = 0
2640     },
2641     {
2642         /* #128 state WHILEM_B_max */
2643         .type = WHILEM,
2644         .arg_len = 0,
2645         .arg_len_varies = 0,
2646         .off_by_arg = 0
2647     },
2648     {
2649         /* #129 state WHILEM_B_max_fail */
2650         .type = WHILEM,
2651         .arg_len = 0,
2652         .arg_len_varies = 0,
2653         .off_by_arg = 0
2654     },
2655     {
2656         /* #130 state BRANCH_next */
2657         .type = BRANCH,
2658         .arg_len = 0,
2659         .arg_len_varies = 0,
2660         .off_by_arg = 0
2661     },
2662     {
2663         /* #131 state BRANCH_next_fail */
2664         .type = BRANCH,
2665         .arg_len = 0,
2666         .arg_len_varies = 0,
2667         .off_by_arg = 0
2668     },
2669     {
2670         /* #132 state CURLYM_A */
2671         .type = CURLYM,
2672         .arg_len = 0,
2673         .arg_len_varies = 0,
2674         .off_by_arg = 0
2675     },
2676     {
2677         /* #133 state CURLYM_A_fail */
2678         .type = CURLYM,
2679         .arg_len = 0,
2680         .arg_len_varies = 0,
2681         .off_by_arg = 0
2682     },
2683     {
2684         /* #134 state CURLYM_B */
2685         .type = CURLYM,
2686         .arg_len = 0,
2687         .arg_len_varies = 0,
2688         .off_by_arg = 0
2689     },
2690     {
2691         /* #135 state CURLYM_B_fail */
2692         .type = CURLYM,
2693         .arg_len = 0,
2694         .arg_len_varies = 0,
2695         .off_by_arg = 0
2696     },
2697     {
2698         /* #136 state IFMATCH_A */
2699         .type = IFMATCH,
2700         .arg_len = 0,
2701         .arg_len_varies = 0,
2702         .off_by_arg = 0
2703     },
2704     {
2705         /* #137 state IFMATCH_A_fail */
2706         .type = IFMATCH,
2707         .arg_len = 0,
2708         .arg_len_varies = 0,
2709         .off_by_arg = 0
2710     },
2711     {
2712         /* #138 state CURLY_B_min */
2713         .type = CURLY,
2714         .arg_len = 0,
2715         .arg_len_varies = 0,
2716         .off_by_arg = 0
2717     },
2718     {
2719         /* #139 state CURLY_B_min_fail */
2720         .type = CURLY,
2721         .arg_len = 0,
2722         .arg_len_varies = 0,
2723         .off_by_arg = 0
2724     },
2725     {
2726         /* #140 state CURLY_B_max */
2727         .type = CURLY,
2728         .arg_len = 0,
2729         .arg_len_varies = 0,
2730         .off_by_arg = 0
2731     },
2732     {
2733         /* #141 state CURLY_B_max_fail */
2734         .type = CURLY,
2735         .arg_len = 0,
2736         .arg_len_varies = 0,
2737         .off_by_arg = 0
2738     },
2739     {
2740         /* #142 state COMMIT_next */
2741         .type = COMMIT,
2742         .arg_len = 0,
2743         .arg_len_varies = 0,
2744         .off_by_arg = 0
2745     },
2746     {
2747         /* #143 state COMMIT_next_fail */
2748         .type = COMMIT,
2749         .arg_len = 0,
2750         .arg_len_varies = 0,
2751         .off_by_arg = 0
2752     },
2753     {
2754         /* #144 state MARKPOINT_next */
2755         .type = MARKPOINT,
2756         .arg_len = 0,
2757         .arg_len_varies = 0,
2758         .off_by_arg = 0
2759     },
2760     {
2761         /* #145 state MARKPOINT_next_fail */
2762         .type = MARKPOINT,
2763         .arg_len = 0,
2764         .arg_len_varies = 0,
2765         .off_by_arg = 0
2766     },
2767     {
2768         /* #146 state SKIP_next */
2769         .type = SKIP,
2770         .arg_len = 0,
2771         .arg_len_varies = 0,
2772         .off_by_arg = 0
2773     },
2774     {
2775         /* #147 state SKIP_next_fail */
2776         .type = SKIP,
2777         .arg_len = 0,
2778         .arg_len_varies = 0,
2779         .off_by_arg = 0
2780     },
2781     {
2782         /* #148 state CUTGROUP_next */
2783         .type = CUTGROUP,
2784         .arg_len = 0,
2785         .arg_len_varies = 0,
2786         .off_by_arg = 0
2787     },
2788     {
2789         /* #149 state CUTGROUP_next_fail */
2790         .type = CUTGROUP,
2791         .arg_len = 0,
2792         .arg_len_varies = 0,
2793         .off_by_arg = 0
2794     },
2795     {
2796         /* #150 state KEEPS_next */
2797         .type = KEEPS,
2798         .arg_len = 0,
2799         .arg_len_varies = 0,
2800         .off_by_arg = 0
2801     },
2802     {
2803         /* #151 state KEEPS_next_fail */
2804         .type = KEEPS,
2805         .arg_len = 0,
2806         .arg_len_varies = 0,
2807         .off_by_arg = 0
2808     }
2809 };
2810 #endif /* DOINIT */
2811
2812 /* PL_reg_extflags_name[] - Opcode/state names in string form, for debugging */
2813
2814 #ifndef DOINIT
2815 EXTCONST char * PL_reg_extflags_name[];
2816 #else
2817 EXTCONST char * const PL_reg_extflags_name[] = {
2818         /* Bits in extflags defined: 11111111111111110000111111111111 */
2819         "MULTILINE",        /* 0x00000001 */
2820         "SINGLELINE",       /* 0x00000002 */
2821         "FOLD",             /* 0x00000004 */
2822         "EXTENDED",         /* 0x00000008 */
2823         "EXTENDED_MORE",    /* 0x00000010 */
2824         "NOCAPTURE",        /* 0x00000020 */
2825         "KEEPCOPY",         /* 0x00000040 */
2826         "CHARSET0",         /* 0x00000080 : "CHARSET" - 0x00000380 */
2827         "CHARSET1",         /* 0x00000100 : "CHARSET" - 0x00000380 */
2828         "CHARSET2",         /* 0x00000200 : "CHARSET" - 0x00000380 */
2829         "STRICT",           /* 0x00000400 */
2830         "SPLIT",            /* 0x00000800 */
2831         "UNUSED_BIT_12",    /* 0x00001000 */
2832         "UNUSED_BIT_13",    /* 0x00002000 */
2833         "UNUSED_BIT_14",    /* 0x00004000 */
2834         "UNUSED_BIT_15",    /* 0x00008000 */
2835         "NO_INPLACE_SUBST", /* 0x00010000 */
2836         "EVAL_SEEN",        /* 0x00020000 */
2837         "UNBOUNDED_QUANTIFIER_SEEN",/* 0x00040000 */
2838         "CHECK_ALL",        /* 0x00080000 */
2839         "MATCH_UTF8",       /* 0x00100000 */
2840         "USE_INTUIT_NOML",  /* 0x00200000 */
2841         "USE_INTUIT_ML",    /* 0x00400000 */
2842         "INTUIT_TAIL",      /* 0x00800000 */
2843         "IS_ANCHORED",      /* 0x01000000 */
2844         "COPY_DONE",        /* 0x02000000 */
2845         "TAINTED_SEEN",     /* 0x04000000 */
2846         "TAINTED",          /* 0x08000000 */
2847         "START_ONLY",       /* 0x10000000 */
2848         "SKIPWHITE",        /* 0x20000000 */
2849         "WHITE",            /* 0x40000000 */
2850         "NULL",             /* 0x80000000 */
2851 };
2852 #endif /* DOINIT */
2853
2854 #ifdef DEBUGGING
2855 #  define REG_EXTFLAGS_NAME_SIZE 32
2856 #endif
2857
2858 /* PL_reg_intflags_name[] - Opcode/state names in string form, for debugging */
2859
2860 #ifndef DOINIT
2861 EXTCONST char * PL_reg_intflags_name[];
2862 #else
2863 EXTCONST char * const PL_reg_intflags_name[] = {
2864         "SKIP",                       /* 0x00000001 - PREGf_SKIP */
2865         "IMPLICIT",                   /* 0x00000002 - PREGf_IMPLICIT -  Converted .* to ^.*  */
2866         "NAUGHTY",                    /* 0x00000004 - PREGf_NAUGHTY -  how exponential is this pattern?  */
2867         "VERBARG_SEEN",               /* 0x00000008 - PREGf_VERBARG_SEEN */
2868         "CUTGROUP_SEEN",              /* 0x00000010 - PREGf_CUTGROUP_SEEN */
2869         "USE_RE_EVAL",                /* 0x00000020 - PREGf_USE_RE_EVAL -  compiled with "use re 'eval'"  */
2870         "NOSCAN",                     /* 0x00000040 - PREGf_NOSCAN */
2871         "GPOS_SEEN",                  /* 0x00000100 - PREGf_GPOS_SEEN */
2872         "GPOS_FLOAT",                 /* 0x00000200 - PREGf_GPOS_FLOAT */
2873         "ANCH_MBOL",                  /* 0x00000400 - PREGf_ANCH_MBOL */
2874         "ANCH_SBOL",                  /* 0x00000800 - PREGf_ANCH_SBOL */
2875         "ANCH_GPOS",                  /* 0x00001000 - PREGf_ANCH_GPOS */
2876         "RECURSE_SEEN",               /* 0x00002000 - PREGf_RECURSE_SEEN */
2877 };
2878 #endif /* DOINIT */
2879
2880 #ifdef DEBUGGING
2881 #  define REG_INTFLAGS_NAME_SIZE 13
2882 #endif
2883
2884 /* The following have no fixed length. U8 so we can do strchr() on it. */
2885 #define REGNODE_VARIES(node) (PL_varies_bitmask[(node) >> 3] & (1 << ((node) & 7)))
2886
2887 #ifndef DOINIT
2888 EXTCONST U8 PL_varies[] __attribute__deprecated__;
2889 #else
2890 EXTCONST U8 PL_varies[] __attribute__deprecated__ = {
2891     CLUMP, BRANCH, STAR, PLUS, CURLY, CURLYN, CURLYM, CURLYX, WHILEM, REF,
2892     REFF, REFFL, REFFU, REFFA, REFN, REFFN, REFFLN, REFFUN, REFFAN,
2893     BRANCHJ, SUSPEND, IFTHEN,
2894     0
2895 };
2896 #endif /* DOINIT */
2897
2898 #ifndef DOINIT
2899 EXTCONST U8 PL_varies_bitmask[];
2900 #else
2901 EXTCONST U8 PL_varies_bitmask[] = {
2902     0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xC0, 0x1F, 0xFE, 0x97, 0x01, 0x00, 0x00
2903 };
2904 #endif /* DOINIT */
2905
2906 /* The following always have a length of 1. U8 we can do strchr() on it. */
2907 /* (Note that length 1 means "one character" under UTF8, not "one octet".) */
2908 #define REGNODE_SIMPLE(node) (PL_simple_bitmask[(node) >> 3] & (1 << ((node) & 7)))
2909
2910 #ifndef DOINIT
2911 EXTCONST U8 PL_simple[] __attribute__deprecated__;
2912 #else
2913 EXTCONST U8 PL_simple[] __attribute__deprecated__ = {
2914     REG_ANY, SANY, ANYOF, ANYOFD, ANYOFL, ANYOFPOSIXL, ANYOFH, ANYOFHb,
2915     ANYOFHr, ANYOFHs, ANYOFR, ANYOFRb, ANYOFHbbm, ANYOFM, NANYOFM, POSIXD,
2916     POSIXL, POSIXU, POSIXA, NPOSIXD, NPOSIXL, NPOSIXU, NPOSIXA, REGEX_SET,
2917     0
2918 };
2919 #endif /* DOINIT */
2920
2921 #ifndef DOINIT
2922 EXTCONST U8 PL_simple_bitmask[];
2923 #else
2924 EXTCONST U8 PL_simple_bitmask[] = {
2925     0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
2926 };
2927 #endif /* DOINIT */
2928
2929 /* Is 'op', known to be of type EXACT, folding? */
2930 #define isEXACTFish(op) (__ASSERT_(REGNODE_TYPE(op) == EXACT) (PL_EXACTFish_bitmask & (1U << (op - EXACT))))
2931
2932 /* Do only UTF-8 target strings match 'op', known to be of type EXACT? */
2933 #define isEXACT_REQ8(op) (__ASSERT_(REGNODE_TYPE(op) == EXACT) (PL_EXACT_REQ8_bitmask & (1U << (op - EXACT))))
2934
2935 #ifndef DOINIT
2936 EXTCONST U32 PL_EXACTFish_bitmask;
2937 EXTCONST U32 PL_EXACT_REQ8_bitmask;
2938 #else
2939 EXTCONST U32 PL_EXACTFish_bitmask = 0x33F8;
2940 EXTCONST U32 PL_EXACT_REQ8_bitmask = 0x1E00;
2941 #endif /* DOINIT */
2942
2943 #endif /* defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) */
2944
2945 /* ex: set ro: */