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