• Home
  • Raw
  • Download

Lines Matching refs:pattern

202 LOCAL(Py_ssize_t) SRE(match)(SRE_STATE* state, const SRE_CODE* pattern, int toplevel);
205 SRE(count)(SRE_STATE* state, const SRE_CODE* pattern, Py_ssize_t maxcount) in SRE()
217 switch (pattern[0]) { in SRE()
221 TRACE(("|%p|%p|COUNT IN\n", pattern, ptr)); in SRE()
222 while (ptr < end && SRE(charset)(state, pattern + 2, *ptr)) in SRE()
228 TRACE(("|%p|%p|COUNT ANY\n", pattern, ptr)); in SRE()
236 TRACE(("|%p|%p|COUNT ANY_ALL\n", pattern, ptr)); in SRE()
242 chr = pattern[1]; in SRE()
243 TRACE(("|%p|%p|COUNT LITERAL %d\n", pattern, ptr, chr)); in SRE()
256 chr = pattern[1]; in SRE()
257 TRACE(("|%p|%p|COUNT LITERAL_IGNORE %d\n", pattern, ptr, chr)); in SRE()
264 chr = pattern[1]; in SRE()
265 TRACE(("|%p|%p|COUNT LITERAL_UNI_IGNORE %d\n", pattern, ptr, chr)); in SRE()
272 chr = pattern[1]; in SRE()
273 TRACE(("|%p|%p|COUNT LITERAL_LOC_IGNORE %d\n", pattern, ptr, chr)); in SRE()
280 chr = pattern[1]; in SRE()
281 TRACE(("|%p|%p|COUNT NOT_LITERAL %d\n", pattern, ptr, chr)); in SRE()
294 chr = pattern[1]; in SRE()
295 TRACE(("|%p|%p|COUNT NOT_LITERAL_IGNORE %d\n", pattern, ptr, chr)); in SRE()
302 chr = pattern[1]; in SRE()
303 TRACE(("|%p|%p|COUNT NOT_LITERAL_UNI_IGNORE %d\n", pattern, ptr, chr)); in SRE()
310 chr = pattern[1]; in SRE()
311 TRACE(("|%p|%p|COUNT NOT_LITERAL_LOC_IGNORE %d\n", pattern, ptr, chr)); in SRE()
318 TRACE(("|%p|%p|COUNT SUBPATTERN\n", pattern, ptr)); in SRE()
320 i = SRE(match)(state, pattern, 0); in SRE()
326 TRACE(("|%p|%p|COUNT %zd\n", pattern, ptr, in SRE()
331 TRACE(("|%p|%p|COUNT %zd\n", pattern, ptr, in SRE()
338 SRE(info)(SRE_STATE* state, const SRE_CODE* pattern)
349 if (pattern[3] && end - ptr < pattern[3])
353 if (pattern[2] & SRE_INFO_PREFIX && pattern[5] > 1) {
355 for (i = 0; i < pattern[5]; i++)
356 if ((SRE_CODE) ptr[i] != pattern[7 + i])
358 return pattern[0] + 2 * pattern[6];
360 return pattern[0];
516 nextctx->pattern = nextpattern; \
534 const SRE_CODE* pattern; member
548 SRE(match)(SRE_STATE* state, const SRE_CODE* pattern, int toplevel) in SRE()
559 TRACE(("|%p|%p|ENTER\n", pattern, state->ptr)); in SRE()
564 ctx->pattern = pattern; in SRE()
572 if (ctx->pattern[0] == SRE_OP_INFO) { in SRE()
575 if (ctx->pattern[3] && (uintptr_t)(end - ctx->ptr) < ctx->pattern[3]) { in SRE()
577 end - ctx->ptr, (Py_ssize_t) ctx->pattern[3])); in SRE()
580 ctx->pattern += ctx->pattern[1] + 1; in SRE()
588 switch (*ctx->pattern++) { in SRE()
593 TRACE(("|%p|%p|MARK %d\n", ctx->pattern, in SRE()
594 ctx->ptr, ctx->pattern[0])); in SRE()
595 i = ctx->pattern[0]; in SRE()
609 ctx->pattern++; in SRE()
615 TRACE(("|%p|%p|LITERAL %d\n", ctx->pattern, in SRE()
616 ctx->ptr, *ctx->pattern)); in SRE()
617 if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] != ctx->pattern[0]) in SRE()
619 ctx->pattern++; in SRE()
626 TRACE(("|%p|%p|NOT_LITERAL %d\n", ctx->pattern, in SRE()
627 ctx->ptr, *ctx->pattern)); in SRE()
628 if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] == ctx->pattern[0]) in SRE()
630 ctx->pattern++; in SRE()
636 TRACE(("|%p|%p|SUCCESS\n", ctx->pattern, ctx->ptr)); in SRE()
649 TRACE(("|%p|%p|AT %d\n", ctx->pattern, ctx->ptr, *ctx->pattern)); in SRE()
650 if (!SRE(at)(state, ctx->ptr, *ctx->pattern)) in SRE()
652 ctx->pattern++; in SRE()
658 TRACE(("|%p|%p|CATEGORY %d\n", ctx->pattern, in SRE()
659 ctx->ptr, *ctx->pattern)); in SRE()
660 if (ctx->ptr >= end || !sre_category(ctx->pattern[0], ctx->ptr[0])) in SRE()
662 ctx->pattern++; in SRE()
669 TRACE(("|%p|%p|ANY\n", ctx->pattern, ctx->ptr)); in SRE()
678 TRACE(("|%p|%p|ANY_ALL\n", ctx->pattern, ctx->ptr)); in SRE()
687 TRACE(("|%p|%p|IN\n", ctx->pattern, ctx->ptr)); in SRE()
689 !SRE(charset)(state, ctx->pattern + 1, *ctx->ptr)) in SRE()
691 ctx->pattern += ctx->pattern[0]; in SRE()
697 ctx->pattern, ctx->ptr, ctx->pattern[0])); in SRE()
699 sre_lower_ascii(*ctx->ptr) != *ctx->pattern) in SRE()
701 ctx->pattern++; in SRE()
707 ctx->pattern, ctx->ptr, ctx->pattern[0])); in SRE()
709 sre_lower_unicode(*ctx->ptr) != *ctx->pattern) in SRE()
711 ctx->pattern++; in SRE()
717 ctx->pattern, ctx->ptr, ctx->pattern[0])); in SRE()
719 || !char_loc_ignore(*ctx->pattern, *ctx->ptr)) in SRE()
721 ctx->pattern++; in SRE()
727 ctx->pattern, ctx->ptr, *ctx->pattern)); in SRE()
729 sre_lower_ascii(*ctx->ptr) == *ctx->pattern) in SRE()
731 ctx->pattern++; in SRE()
737 ctx->pattern, ctx->ptr, *ctx->pattern)); in SRE()
739 sre_lower_unicode(*ctx->ptr) == *ctx->pattern) in SRE()
741 ctx->pattern++; in SRE()
747 ctx->pattern, ctx->ptr, *ctx->pattern)); in SRE()
749 || char_loc_ignore(*ctx->pattern, *ctx->ptr)) in SRE()
751 ctx->pattern++; in SRE()
756 TRACE(("|%p|%p|IN_IGNORE\n", ctx->pattern, ctx->ptr)); in SRE()
758 || !SRE(charset)(state, ctx->pattern+1, in SRE()
761 ctx->pattern += ctx->pattern[0]; in SRE()
766 TRACE(("|%p|%p|IN_UNI_IGNORE\n", ctx->pattern, ctx->ptr)); in SRE()
768 || !SRE(charset)(state, ctx->pattern+1, in SRE()
771 ctx->pattern += ctx->pattern[0]; in SRE()
776 TRACE(("|%p|%p|IN_LOC_IGNORE\n", ctx->pattern, ctx->ptr)); in SRE()
778 || !SRE(charset_loc_ignore)(state, ctx->pattern+1, *ctx->ptr)) in SRE()
780 ctx->pattern += ctx->pattern[0]; in SRE()
788 TRACE(("|%p|%p|JUMP %d\n", ctx->pattern, in SRE()
789 ctx->ptr, ctx->pattern[0])); in SRE()
790 ctx->pattern += ctx->pattern[0]; in SRE()
796 TRACE(("|%p|%p|BRANCH\n", ctx->pattern, ctx->ptr)); in SRE()
801 for (; ctx->pattern[0]; ctx->pattern += ctx->pattern[0]) { in SRE()
802 if (ctx->pattern[1] == SRE_OP_LITERAL && in SRE()
804 (SRE_CODE) *ctx->ptr != ctx->pattern[2])) in SRE()
806 if (ctx->pattern[1] == SRE_OP_IN && in SRE()
808 !SRE(charset)(state, ctx->pattern + 3, in SRE()
812 DO_JUMP(JUMP_BRANCH, jump_branch, ctx->pattern+1); in SRE()
837 TRACE(("|%p|%p|REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr, in SRE()
838 ctx->pattern[1], ctx->pattern[2])); in SRE()
840 if ((Py_ssize_t) ctx->pattern[1] > end - ctx->ptr) in SRE()
845 ret = SRE(count)(state, ctx->pattern+3, ctx->pattern[2]); in SRE()
856 if (ctx->count < (Py_ssize_t) ctx->pattern[1]) in SRE()
859 if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS && in SRE()
870 if (ctx->pattern[ctx->pattern[0]] == SRE_OP_LITERAL) { in SRE()
873 ctx->u.chr = ctx->pattern[ctx->pattern[0]+1]; in SRE()
875 while (ctx->count >= (Py_ssize_t) ctx->pattern[1] && in SRE()
880 if (ctx->count < (Py_ssize_t) ctx->pattern[1]) in SRE()
884 ctx->pattern+ctx->pattern[0]); in SRE()
898 while (ctx->count >= (Py_ssize_t) ctx->pattern[1]) { in SRE()
901 ctx->pattern+ctx->pattern[0]); in SRE()
923 TRACE(("|%p|%p|MIN_REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr, in SRE()
924 ctx->pattern[1], ctx->pattern[2])); in SRE()
926 if ((Py_ssize_t) ctx->pattern[1] > end - ctx->ptr) in SRE()
931 if (ctx->pattern[1] == 0) in SRE()
935 ret = SRE(count)(state, ctx->pattern+3, ctx->pattern[1]); in SRE()
938 if (ret < (Py_ssize_t) ctx->pattern[1]) in SRE()
946 if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS && in SRE()
958 while ((Py_ssize_t)ctx->pattern[2] == SRE_MAXREPEAT in SRE()
959 || ctx->count <= (Py_ssize_t)ctx->pattern[2]) { in SRE()
962 ctx->pattern+ctx->pattern[0]); in SRE()
968 ret = SRE(count)(state, ctx->pattern+3, 1); in SRE()
985 TRACE(("|%p|%p|REPEAT %d %d\n", ctx->pattern, ctx->ptr, in SRE()
986 ctx->pattern[1], ctx->pattern[2])); in SRE()
995 ctx->u.rep->pattern = ctx->pattern; in SRE()
1001 DO_JUMP(JUMP_REPEAT, jump_repeat, ctx->pattern+ctx->pattern[0]); in SRE()
1026 TRACE(("|%p|%p|MAX_UNTIL %zd\n", ctx->pattern, in SRE()
1029 if (ctx->count < (Py_ssize_t) ctx->u.rep->pattern[1]) { in SRE()
1033 ctx->u.rep->pattern+3); in SRE()
1043 if ((ctx->count < (Py_ssize_t) ctx->u.rep->pattern[2] || in SRE()
1044 ctx->u.rep->pattern[2] == SRE_MAXREPEAT) && in SRE()
1055 ctx->u.rep->pattern+3); in SRE()
1071 DO_JUMP(JUMP_MAX_UNTIL_3, jump_max_until_3, ctx->pattern); in SRE()
1089 TRACE(("|%p|%p|MIN_UNTIL %zd %p\n", ctx->pattern, in SRE()
1090 ctx->ptr, ctx->count, ctx->u.rep->pattern)); in SRE()
1092 if (ctx->count < (Py_ssize_t) ctx->u.rep->pattern[1]) { in SRE()
1096 ctx->u.rep->pattern+3); in SRE()
1110 DO_JUMP(JUMP_MIN_UNTIL_2, jump_min_until_2, ctx->pattern); in SRE()
1121 if ((ctx->count >= (Py_ssize_t) ctx->u.rep->pattern[2] in SRE()
1122 && ctx->u.rep->pattern[2] != SRE_MAXREPEAT) || in SRE()
1131 ctx->u.rep->pattern+3); in SRE()
1143 TRACE(("|%p|%p|GROUPREF %d\n", ctx->pattern, in SRE()
1144 ctx->ptr, ctx->pattern[0])); in SRE()
1145 i = ctx->pattern[0]; in SRE()
1163 ctx->pattern++; in SRE()
1168 TRACE(("|%p|%p|GROUPREF_IGNORE %d\n", ctx->pattern, in SRE()
1169 ctx->ptr, ctx->pattern[0])); in SRE()
1170 i = ctx->pattern[0]; in SRE()
1189 ctx->pattern++; in SRE()
1194 TRACE(("|%p|%p|GROUPREF_UNI_IGNORE %d\n", ctx->pattern, in SRE()
1195 ctx->ptr, ctx->pattern[0])); in SRE()
1196 i = ctx->pattern[0]; in SRE()
1215 ctx->pattern++; in SRE()
1220 TRACE(("|%p|%p|GROUPREF_LOC_IGNORE %d\n", ctx->pattern, in SRE()
1221 ctx->ptr, ctx->pattern[0])); in SRE()
1222 i = ctx->pattern[0]; in SRE()
1241 ctx->pattern++; in SRE()
1245 TRACE(("|%p|%p|GROUPREF_EXISTS %d\n", ctx->pattern, in SRE()
1246 ctx->ptr, ctx->pattern[0])); in SRE()
1248 i = ctx->pattern[0]; in SRE()
1252 ctx->pattern += ctx->pattern[1]; in SRE()
1258 ctx->pattern += ctx->pattern[1]; in SRE()
1263 ctx->pattern += 2; in SRE()
1269 TRACE(("|%p|%p|ASSERT %d\n", ctx->pattern, in SRE()
1270 ctx->ptr, ctx->pattern[1])); in SRE()
1271 if (ctx->ptr - (SRE_CHAR *)state->beginning < (Py_ssize_t)ctx->pattern[1]) in SRE()
1273 state->ptr = ctx->ptr - ctx->pattern[1]; in SRE()
1274 DO_JUMP0(JUMP_ASSERT, jump_assert, ctx->pattern+2); in SRE()
1276 ctx->pattern += ctx->pattern[0]; in SRE()
1282 TRACE(("|%p|%p|ASSERT_NOT %d\n", ctx->pattern, in SRE()
1283 ctx->ptr, ctx->pattern[1])); in SRE()
1284 if (ctx->ptr - (SRE_CHAR *)state->beginning >= (Py_ssize_t)ctx->pattern[1]) { in SRE()
1285 state->ptr = ctx->ptr - ctx->pattern[1]; in SRE()
1286 DO_JUMP0(JUMP_ASSERT_NOT, jump_assert_not, ctx->pattern+2); in SRE()
1292 ctx->pattern += ctx->pattern[0]; in SRE()
1297 TRACE(("|%p|%p|FAILURE\n", ctx->pattern, ctx->ptr)); in SRE()
1301 TRACE(("|%p|%p|UNKNOWN %d\n", ctx->pattern, ctx->ptr, in SRE()
1302 ctx->pattern[-1])); in SRE()
1317 TRACE(("|%p|%p|JUMP_MAX_UNTIL_2\n", ctx->pattern, ctx->ptr)); in SRE()
1320 TRACE(("|%p|%p|JUMP_MAX_UNTIL_3\n", ctx->pattern, ctx->ptr)); in SRE()
1323 TRACE(("|%p|%p|JUMP_MIN_UNTIL_2\n", ctx->pattern, ctx->ptr)); in SRE()
1326 TRACE(("|%p|%p|JUMP_MIN_UNTIL_3\n", ctx->pattern, ctx->ptr)); in SRE()
1329 TRACE(("|%p|%p|JUMP_BRANCH\n", ctx->pattern, ctx->ptr)); in SRE()
1332 TRACE(("|%p|%p|JUMP_MAX_UNTIL_1\n", ctx->pattern, ctx->ptr)); in SRE()
1335 TRACE(("|%p|%p|JUMP_MIN_UNTIL_1\n", ctx->pattern, ctx->ptr)); in SRE()
1338 TRACE(("|%p|%p|JUMP_REPEAT\n", ctx->pattern, ctx->ptr)); in SRE()
1341 TRACE(("|%p|%p|JUMP_REPEAT_ONE_1\n", ctx->pattern, ctx->ptr)); in SRE()
1344 TRACE(("|%p|%p|JUMP_REPEAT_ONE_2\n", ctx->pattern, ctx->ptr)); in SRE()
1347 TRACE(("|%p|%p|JUMP_MIN_REPEAT_ONE\n", ctx->pattern, ctx->ptr)); in SRE()
1350 TRACE(("|%p|%p|JUMP_ASSERT\n", ctx->pattern, ctx->ptr)); in SRE()
1353 TRACE(("|%p|%p|JUMP_ASSERT_NOT\n", ctx->pattern, ctx->ptr)); in SRE()
1356 TRACE(("|%p|%p|RETURN %zd\n", ctx->pattern, in SRE()
1369 SRE(search)(SRE_STATE* state, SRE_CODE* pattern) in SRE()
1384 if (pattern[0] == SRE_OP_INFO) { in SRE()
1388 flags = pattern[2]; in SRE()
1390 if (pattern[3] && end - ptr < (Py_ssize_t)pattern[3]) { in SRE()
1392 (unsigned int)(end - ptr), pattern[3])); in SRE()
1395 if (pattern[3] > 1) { in SRE()
1398 end -= pattern[3] - 1; in SRE()
1406 prefix_len = pattern[5]; in SRE()
1407 prefix_skip = pattern[6]; in SRE()
1408 prefix = pattern + 7; in SRE()
1413 charset = pattern + 5; in SRE()
1415 pattern += 1 + pattern[1]; in SRE()
1436 TRACE(("|%p|%p|SEARCH LITERAL\n", pattern, ptr)); in SRE()
1441 status = SRE(match)(state, pattern + 2*prefix_skip, 0); in SRE()
1482 TRACE(("|%p|%p|SEARCH SCAN\n", pattern, ptr)); in SRE()
1487 status = SRE(match)(state, pattern + 2*prefix_skip, 0); in SRE()
1510 TRACE(("|%p|%p|SEARCH CHARSET\n", pattern, ptr)); in SRE()
1513 status = SRE(match)(state, pattern, 0); in SRE()
1522 TRACE(("|%p|%p|SEARCH\n", pattern, ptr)); in SRE()
1524 status = SRE(match)(state, pattern, 1); in SRE()
1529 TRACE(("|%p|%p|SEARCH\n", pattern, ptr)); in SRE()
1531 status = SRE(match)(state, pattern, 0); in SRE()