• Home
  • Raw
  • Download

Lines Matching full: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()
218 switch (pattern[0]) { in SRE()
222 TRACE(("|%p|%p|COUNT IN\n", pattern, ptr)); in SRE()
223 while (ptr < end && SRE(charset)(state, pattern + 2, *ptr)) in SRE()
229 TRACE(("|%p|%p|COUNT ANY\n", pattern, ptr)); in SRE()
237 TRACE(("|%p|%p|COUNT ANY_ALL\n", pattern, ptr)); in SRE()
243 chr = pattern[1]; in SRE()
244 TRACE(("|%p|%p|COUNT LITERAL %d\n", pattern, ptr, chr)); in SRE()
257 chr = pattern[1]; in SRE()
258 TRACE(("|%p|%p|COUNT LITERAL_IGNORE %d\n", pattern, ptr, chr)); in SRE()
265 chr = pattern[1]; in SRE()
266 TRACE(("|%p|%p|COUNT LITERAL_UNI_IGNORE %d\n", pattern, ptr, chr)); in SRE()
273 chr = pattern[1]; in SRE()
274 TRACE(("|%p|%p|COUNT LITERAL_LOC_IGNORE %d\n", pattern, ptr, chr)); in SRE()
281 chr = pattern[1]; in SRE()
282 TRACE(("|%p|%p|COUNT NOT_LITERAL %d\n", pattern, ptr, chr)); in SRE()
295 chr = pattern[1]; in SRE()
296 TRACE(("|%p|%p|COUNT NOT_LITERAL_IGNORE %d\n", pattern, ptr, chr)); in SRE()
303 chr = pattern[1]; in SRE()
304 TRACE(("|%p|%p|COUNT NOT_LITERAL_UNI_IGNORE %d\n", pattern, ptr, chr)); in SRE()
311 chr = pattern[1]; in SRE()
312 TRACE(("|%p|%p|COUNT NOT_LITERAL_LOC_IGNORE %d\n", pattern, ptr, chr)); in SRE()
318 /* repeated single character pattern */ in SRE()
319 TRACE(("|%p|%p|COUNT SUBPATTERN\n", pattern, ptr)); in SRE()
321 i = SRE(match)(state, pattern, 0); in SRE()
327 TRACE(("|%p|%p|COUNT %zd\n", pattern, ptr, in SRE()
332 TRACE(("|%p|%p|COUNT %zd\n", pattern, ptr, in SRE()
527 ctx->pattern = pattern; \
530 nextctx->pattern = nextpattern; \
534 pattern = nextpattern; \
539 pattern = ctx->pattern; \
556 const SRE_CODE* pattern; member
601 goto *sre_targets[*pattern++]; \
608 /* check if string matches the given pattern. returns <0 for
611 SRE(match)(SRE_STATE* state, const SRE_CODE* pattern, int toplevel) in SRE()
623 TRACE(("|%p|%p|ENTER\n", pattern, state->ptr)); in SRE()
640 if (pattern[0] == SRE_OP_INFO) { in SRE()
643 if (pattern[3] && (uintptr_t)(end - ptr) < pattern[3]) { in SRE()
645 end - ptr, (size_t) pattern[3])); in SRE()
648 pattern += pattern[1] + 1; in SRE()
656 switch (*pattern++) in SRE()
663 TRACE(("|%p|%p|MARK %d\n", pattern, in SRE()
664 ptr, pattern[0])); in SRE()
666 int i = pattern[0]; in SRE()
681 pattern++; in SRE()
687 TRACE(("|%p|%p|LITERAL %d\n", pattern, in SRE()
688 ptr, *pattern)); in SRE()
689 if (ptr >= end || (SRE_CODE) ptr[0] != pattern[0]) in SRE()
691 pattern++; in SRE()
698 TRACE(("|%p|%p|NOT_LITERAL %d\n", pattern, in SRE()
699 ptr, *pattern)); in SRE()
700 if (ptr >= end || (SRE_CODE) ptr[0] == pattern[0]) in SRE()
702 pattern++; in SRE()
707 /* end of pattern */ in SRE()
708 TRACE(("|%p|%p|SUCCESS\n", pattern, ptr)); in SRE()
721 TRACE(("|%p|%p|AT %d\n", pattern, ptr, *pattern)); in SRE()
722 if (!SRE(at)(state, ptr, *pattern)) in SRE()
724 pattern++; in SRE()
730 TRACE(("|%p|%p|CATEGORY %d\n", pattern, in SRE()
731 ptr, *pattern)); in SRE()
732 if (ptr >= end || !sre_category(pattern[0], ptr[0])) in SRE()
734 pattern++; in SRE()
741 TRACE(("|%p|%p|ANY\n", pattern, ptr)); in SRE()
750 TRACE(("|%p|%p|ANY_ALL\n", pattern, ptr)); in SRE()
759 TRACE(("|%p|%p|IN\n", pattern, ptr)); in SRE()
761 !SRE(charset)(state, pattern + 1, *ptr)) in SRE()
763 pattern += pattern[0]; in SRE()
769 pattern, ptr, pattern[0])); in SRE()
771 sre_lower_ascii(*ptr) != *pattern) in SRE()
773 pattern++; in SRE()
779 pattern, ptr, pattern[0])); in SRE()
781 sre_lower_unicode(*ptr) != *pattern) in SRE()
783 pattern++; in SRE()
789 pattern, ptr, pattern[0])); in SRE()
791 || !char_loc_ignore(*pattern, *ptr)) in SRE()
793 pattern++; in SRE()
799 pattern, ptr, *pattern)); in SRE()
801 sre_lower_ascii(*ptr) == *pattern) in SRE()
803 pattern++; in SRE()
809 pattern, ptr, *pattern)); in SRE()
811 sre_lower_unicode(*ptr) == *pattern) in SRE()
813 pattern++; in SRE()
819 pattern, ptr, *pattern)); in SRE()
821 || char_loc_ignore(*pattern, *ptr)) in SRE()
823 pattern++; in SRE()
828 TRACE(("|%p|%p|IN_IGNORE\n", pattern, ptr)); in SRE()
830 || !SRE(charset)(state, pattern+1, in SRE()
833 pattern += pattern[0]; in SRE()
838 TRACE(("|%p|%p|IN_UNI_IGNORE\n", pattern, ptr)); in SRE()
840 || !SRE(charset)(state, pattern+1, in SRE()
843 pattern += pattern[0]; in SRE()
848 TRACE(("|%p|%p|IN_LOC_IGNORE\n", pattern, ptr)); in SRE()
850 || !SRE(charset_loc_ignore)(state, pattern+1, *ptr)) in SRE()
852 pattern += pattern[0]; in SRE()
860 TRACE(("|%p|%p|JUMP %d\n", pattern, in SRE()
861 ptr, pattern[0])); in SRE()
862 pattern += pattern[0]; in SRE()
868 TRACE(("|%p|%p|BRANCH\n", pattern, ptr)); in SRE()
872 for (; pattern[0]; pattern += pattern[0]) { in SRE()
873 if (pattern[1] == SRE_OP_LITERAL && in SRE()
875 (SRE_CODE) *ptr != pattern[2])) in SRE()
877 if (pattern[1] == SRE_OP_IN && in SRE()
879 !SRE(charset)(state, pattern + 3, in SRE()
883 DO_JUMP(JUMP_BRANCH, jump_branch, pattern+1); in SRE()
908 TRACE(("|%p|%p|REPEAT_ONE %d %d\n", pattern, ptr, in SRE()
909 pattern[1], pattern[2])); in SRE()
911 if ((Py_ssize_t) pattern[1] > end - ptr) in SRE()
916 ret = SRE(count)(state, pattern+3, pattern[2]); in SRE()
924 string. check if the rest of the pattern matches, in SRE()
927 if (ctx->count < (Py_ssize_t) pattern[1]) in SRE()
930 if (pattern[pattern[0]] == SRE_OP_SUCCESS && in SRE()
943 if (pattern[pattern[0]] == SRE_OP_LITERAL) { in SRE()
945 the rest of the pattern cannot possibly match */ in SRE()
946 ctx->u.chr = pattern[pattern[0]+1]; in SRE()
948 while (ctx->count >= (Py_ssize_t) pattern[1] && in SRE()
953 if (ctx->count < (Py_ssize_t) pattern[1]) in SRE()
957 pattern+pattern[0]); in SRE()
975 while (ctx->count >= (Py_ssize_t) pattern[1]) { in SRE()
978 pattern+pattern[0]); in SRE()
1007 TRACE(("|%p|%p|MIN_REPEAT_ONE %d %d\n", pattern, ptr, in SRE()
1008 pattern[1], pattern[2])); in SRE()
1010 if ((Py_ssize_t) pattern[1] > end - ptr) in SRE()
1015 if (pattern[1] == 0) in SRE()
1018 /* count using pattern min as the maximum */ in SRE()
1019 ret = SRE(count)(state, pattern+3, pattern[1]); in SRE()
1022 if (ret < (Py_ssize_t) pattern[1]) in SRE()
1030 if (pattern[pattern[0]] == SRE_OP_SUCCESS && in SRE()
1045 while ((Py_ssize_t)pattern[2] == SRE_MAXREPEAT in SRE()
1046 || ctx->count <= (Py_ssize_t)pattern[2]) { in SRE()
1049 pattern+pattern[0]); in SRE()
1061 ret = SRE(count)(state, pattern+3, 1); in SRE()
1087 TRACE(("|%p|%p|POSSESSIVE_REPEAT_ONE %d %d\n", pattern, in SRE()
1088 ptr, pattern[1], pattern[2])); in SRE()
1090 if (ptr + pattern[1] > end) { in SRE()
1096 ret = SRE(count)(state, pattern + 3, pattern[2]); in SRE()
1104 string. check if the rest of the pattern matches, in SRE()
1108 if (ctx->count < (Py_ssize_t) pattern[1]) { in SRE()
1112 /* Update the pattern to point to the next op code */ in SRE()
1113 pattern += pattern[0]; in SRE()
1117 if (*pattern == SRE_OP_SUCCESS && in SRE()
1134 TRACE(("|%p|%p|REPEAT %d %d\n", pattern, ptr, in SRE()
1135 pattern[1], pattern[2])); in SRE()
1143 ctx->u.rep->pattern = pattern; in SRE()
1149 DO_JUMP(JUMP_REPEAT, jump_repeat, pattern+pattern[0]); in SRE()
1174 TRACE(("|%p|%p|MAX_UNTIL %zd\n", pattern, in SRE()
1177 if (ctx->count < (Py_ssize_t) ctx->u.rep->pattern[1]) { in SRE()
1181 ctx->u.rep->pattern+3); in SRE()
1191 if ((ctx->count < (Py_ssize_t) ctx->u.rep->pattern[2] || in SRE()
1192 ctx->u.rep->pattern[2] == SRE_MAXREPEAT) && in SRE()
1203 ctx->u.rep->pattern+3); in SRE()
1219 DO_JUMP(JUMP_MAX_UNTIL_3, jump_max_until_3, pattern); in SRE()
1238 TRACE(("|%p|%p|MIN_UNTIL %zd %p\n", pattern, in SRE()
1239 ptr, ctx->count, ctx->u.rep->pattern)); in SRE()
1241 if (ctx->count < (Py_ssize_t) ctx->u.rep->pattern[1]) { in SRE()
1245 ctx->u.rep->pattern+3); in SRE()
1262 DO_JUMP(JUMP_MIN_UNTIL_2, jump_min_until_2, pattern); in SRE()
1278 if ((ctx->count >= (Py_ssize_t) ctx->u.rep->pattern[2] in SRE()
1279 && ctx->u.rep->pattern[2] != SRE_MAXREPEAT) || in SRE()
1288 ctx->u.rep->pattern+3); in SRE()
1300 /* <POSSESSIVE_REPEAT> <skip> <1=min> <2=max> pattern in SRE()
1302 TRACE(("|%p|%p|POSSESSIVE_REPEAT %d %d\n", pattern, in SRE()
1303 ptr, pattern[1], pattern[2])); in SRE()
1315 ctx->u.rep->pattern = NULL; in SRE()
1324 while (ctx->count < (Py_ssize_t)pattern[1]) { in SRE()
1327 &pattern[3]); in SRE()
1346 /* Keep trying to parse the <pattern> sub-pattern until the in SRE()
1348 while ((ctx->count < (Py_ssize_t)pattern[2] || in SRE()
1349 (Py_ssize_t)pattern[2] == SRE_MAXREPEAT) && in SRE()
1377 &pattern[3]); in SRE()
1414 /* Jump to end of pattern indicated by skip, and then skip in SRE()
1416 pattern += pattern[0] + 1; in SRE()
1421 /* Atomic Group Sub Pattern */ in SRE()
1422 /* <ATOMIC_GROUP> <skip> pattern <SUCCESS> tail */ in SRE()
1423 TRACE(("|%p|%p|ATOMIC_GROUP\n", pattern, ptr)); in SRE()
1432 /* Group Pattern begins at an offset of 1 code. */ in SRE()
1434 &pattern[1]); in SRE()
1446 /* Jump to end of pattern indicated by skip, and then skip in SRE()
1448 pattern += pattern[0]; in SRE()
1454 TRACE(("|%p|%p|GROUPREF %d\n", pattern, in SRE()
1455 ptr, pattern[0])); in SRE()
1457 int groupref = pattern[0] * 2; in SRE()
1473 pattern++; in SRE()
1478 TRACE(("|%p|%p|GROUPREF_IGNORE %d\n", pattern, in SRE()
1479 ptr, pattern[0])); in SRE()
1481 int groupref = pattern[0] * 2; in SRE()
1498 pattern++; in SRE()
1503 TRACE(("|%p|%p|GROUPREF_UNI_IGNORE %d\n", pattern, in SRE()
1504 ptr, pattern[0])); in SRE()
1506 int groupref = pattern[0] * 2; in SRE()
1523 pattern++; in SRE()
1528 TRACE(("|%p|%p|GROUPREF_LOC_IGNORE %d\n", pattern, in SRE()
1529 ptr, pattern[0])); in SRE()
1531 int groupref = pattern[0] * 2; in SRE()
1548 pattern++; in SRE()
1552 TRACE(("|%p|%p|GROUPREF_EXISTS %d\n", pattern, in SRE()
1553 ptr, pattern[0])); in SRE()
1556 int groupref = pattern[0] * 2; in SRE()
1558 pattern += pattern[1]; in SRE()
1564 pattern += pattern[1]; in SRE()
1569 pattern += 2; in SRE()
1574 /* <ASSERT> <skip> <back> <pattern> */ in SRE()
1575 TRACE(("|%p|%p|ASSERT %d\n", pattern, in SRE()
1576 ptr, pattern[1])); in SRE()
1577 if ((uintptr_t)(ptr - (SRE_CHAR *)state->beginning) < pattern[1]) in SRE()
1579 state->ptr = ptr - pattern[1]; in SRE()
1580 DO_JUMP0(JUMP_ASSERT, jump_assert, pattern+2); in SRE()
1582 pattern += pattern[0]; in SRE()
1587 /* <ASSERT_NOT> <skip> <back> <pattern> */ in SRE()
1588 TRACE(("|%p|%p|ASSERT_NOT %d\n", pattern, in SRE()
1589 ptr, pattern[1])); in SRE()
1590 if ((uintptr_t)(ptr - (SRE_CHAR *)state->beginning) >= pattern[1]) { in SRE()
1591 state->ptr = ptr - pattern[1]; in SRE()
1596 DO_JUMP0(JUMP_ASSERT_NOT, jump_assert_not, pattern+2); in SRE()
1607 pattern += pattern[0]; in SRE()
1612 TRACE(("|%p|%p|FAILURE\n", pattern, ptr)); in SRE()
1625 TRACE(("|%p|%p|UNKNOWN %d\n", pattern, ptr, in SRE()
1626 pattern[-1])); in SRE()
1643 TRACE(("|%p|%p|JUMP_MAX_UNTIL_2\n", pattern, ptr)); in SRE()
1646 TRACE(("|%p|%p|JUMP_MAX_UNTIL_3\n", pattern, ptr)); in SRE()
1649 TRACE(("|%p|%p|JUMP_MIN_UNTIL_2\n", pattern, ptr)); in SRE()
1652 TRACE(("|%p|%p|JUMP_MIN_UNTIL_3\n", pattern, ptr)); in SRE()
1655 TRACE(("|%p|%p|JUMP_BRANCH\n", pattern, ptr)); in SRE()
1658 TRACE(("|%p|%p|JUMP_MAX_UNTIL_1\n", pattern, ptr)); in SRE()
1661 TRACE(("|%p|%p|JUMP_MIN_UNTIL_1\n", pattern, ptr)); in SRE()
1664 TRACE(("|%p|%p|JUMP_POSS_REPEAT_1\n", pattern, ptr)); in SRE()
1667 TRACE(("|%p|%p|JUMP_POSS_REPEAT_2\n", pattern, ptr)); in SRE()
1670 TRACE(("|%p|%p|JUMP_REPEAT\n", pattern, ptr)); in SRE()
1673 TRACE(("|%p|%p|JUMP_REPEAT_ONE_1\n", pattern, ptr)); in SRE()
1676 TRACE(("|%p|%p|JUMP_REPEAT_ONE_2\n", pattern, ptr)); in SRE()
1679 TRACE(("|%p|%p|JUMP_MIN_REPEAT_ONE\n", pattern, ptr)); in SRE()
1682 TRACE(("|%p|%p|JUMP_ATOMIC_GROUP\n", pattern, ptr)); in SRE()
1685 TRACE(("|%p|%p|JUMP_ASSERT\n", pattern, ptr)); in SRE()
1688 TRACE(("|%p|%p|JUMP_ASSERT_NOT\n", pattern, ptr)); in SRE()
1691 TRACE(("|%p|%p|RETURN %zd\n", pattern, in SRE()
1704 SRE(search)(SRE_STATE* state, SRE_CODE* pattern) in SRE()
1720 if (pattern[0] == SRE_OP_INFO) { in SRE()
1724 flags = pattern[2]; in SRE()
1726 if (pattern[3] && (uintptr_t)(end - ptr) < pattern[3]) { in SRE()
1728 end - ptr, (size_t) pattern[3])); in SRE()
1731 if (pattern[3] > 1) { in SRE()
1734 end -= pattern[3] - 1; in SRE()
1740 /* pattern starts with a known prefix */ in SRE()
1742 prefix_len = pattern[5]; in SRE()
1743 prefix_skip = pattern[6]; in SRE()
1744 prefix = pattern + 7; in SRE()
1747 /* pattern starts with a character from a known set */ in SRE()
1749 charset = pattern + 5; in SRE()
1751 pattern += 1 + pattern[1]; in SRE()
1759 /* pattern starts with a literal character */ in SRE()
1772 TRACE(("|%p|%p|SEARCH LITERAL\n", pattern, ptr)); in SRE()
1777 status = SRE(match)(state, pattern + 2*prefix_skip, 0); in SRE()
1787 /* pattern starts with a known prefix. use the overlap in SRE()
1818 TRACE(("|%p|%p|SEARCH SCAN\n", pattern, ptr)); in SRE()
1823 status = SRE(match)(state, pattern + 2*prefix_skip, 0); in SRE()
1838 /* pattern starts with a character from a known set */ in SRE()
1846 TRACE(("|%p|%p|SEARCH CHARSET\n", pattern, ptr)); in SRE()
1849 status = SRE(match)(state, pattern, 0); in SRE()
1858 TRACE(("|%p|%p|SEARCH\n", pattern, ptr)); in SRE()
1860 status = SRE(match)(state, pattern, 1); in SRE()
1862 if (status == 0 && pattern[0] == SRE_OP_AT && in SRE()
1863 (pattern[1] == SRE_AT_BEGINNING || in SRE()
1864 pattern[1] == SRE_AT_BEGINNING_STRING)) in SRE()
1872 TRACE(("|%p|%p|SEARCH\n", pattern, ptr)); in SRE()
1874 status = SRE(match)(state, pattern, 0); in SRE()