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