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 1432 EXTCONST U8 PL_regkind[]; 1433 #else 1434 EXTCONST 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 1593 static 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 1708 static 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 1827 EXTCONST char * PL_reg_name[]; 1828 #else 1829 EXTCONST 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 1987 EXTCONST char * PL_reg_extflags_name[]; 1988 #else 1989 EXTCONST 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 2033 EXTCONST char * PL_reg_intflags_name[]; 2034 #else 2035 EXTCONST 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 2060 EXTCONST U8 PL_varies[] __attribute__deprecated__; 2061 #else 2062 EXTCONST 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 2071 EXTCONST U8 PL_varies_bitmask[]; 2072 #else 2073 EXTCONST 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 2083 EXTCONST U8 PL_simple[] __attribute__deprecated__; 2084 #else 2085 EXTCONST 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 2094 EXTCONST U8 PL_simple_bitmask[]; 2095 #else 2096 EXTCONST 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 2108 EXTCONST U32 PL_EXACTFish_bitmask; 2109 EXTCONST U32 PL_EXACT_REQ8_bitmask; 2110 #else 2111 EXTCONST U32 PL_EXACTFish_bitmask = 0x33F8; 2112 EXTCONST 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: */ 2118