diff options
Diffstat (limited to 'Modules/_sre.c')
-rw-r--r-- | Modules/_sre.c | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/Modules/_sre.c b/Modules/_sre.c index 22b6c7347c..268c5dd82b 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -20,7 +20,7 @@ * 00-06-28 fl fixed findall (0.9.1) * 00-06-29 fl fixed split, added more scanner features (0.9.2) * 00-06-30 fl tuning, fast search (0.9.3) - * 00-06-30 fl added assert (lookahead) primitives (0.9.4) + * 00-06-30 fl added assert (lookahead) primitives, etc (0.9.4) * * Copyright (c) 1997-2000 by Secret Labs AB. All rights reserved. * @@ -339,7 +339,7 @@ SRE_AT(SRE_STATE* state, SRE_CHAR* ptr, SRE_CODE at) } LOCAL(int) -SRE_MEMBER(SRE_CODE* set, SRE_CHAR ch) +SRE_MEMBER(SRE_CODE* set, SRE_CODE ch) { /* check if character is a member of the given set */ @@ -356,13 +356,13 @@ SRE_MEMBER(SRE_CODE* set, SRE_CHAR ch) return !ok; case SRE_OP_LITERAL: - if (ch == (SRE_CHAR) set[0]) + if (ch == set[0]) return ok; set++; break; case SRE_OP_RANGE: - if ((SRE_CHAR) set[0] <= ch && ch <= (SRE_CHAR) set[1]) + if (set[0] <= ch && ch <= set[1]) return ok; set += 2; break; @@ -455,8 +455,8 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) case SRE_OP_LITERAL: /* match literal string */ /* args: <code> */ - TRACE(("%8d: literal %c\n", PTR(ptr), (SRE_CHAR) pattern[0])); - if (ptr >= end || *ptr != (SRE_CHAR) pattern[0]) + TRACE(("%8d: literal %c\n", PTR(ptr), pattern[0])); + if (ptr >= end || (SRE_CODE) ptr[0] != pattern[0]) goto failure; pattern++; ptr++; @@ -465,8 +465,8 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) case SRE_OP_NOT_LITERAL: /* match anything that is not literal character */ /* args: <code> */ - TRACE(("%8d: literal not %c\n", PTR(ptr), (SRE_CHAR) pattern[0])); - if (ptr >= end || *ptr == (SRE_CHAR) pattern[0]) + TRACE(("%8d: literal not %c\n", PTR(ptr), pattern[0])); + if (ptr >= end || (SRE_CODE) ptr[0] == pattern[0]) goto failure; pattern++; ptr++; @@ -528,7 +528,7 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) break; case SRE_OP_LITERAL_IGNORE: - TRACE(("%8d: literal lower(%c)\n", PTR(ptr), (SRE_CHAR) *pattern)); + TRACE(("%8d: literal lower(%c)\n", PTR(ptr), pattern[0])); if (ptr >= end || state->lower(*ptr) != state->lower(*pattern)) goto failure; @@ -537,8 +537,7 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) break; case SRE_OP_NOT_LITERAL_IGNORE: - TRACE(("%8d: literal not lower(%c)\n", PTR(ptr), - (SRE_CHAR) *pattern)); + TRACE(("%8d: literal not lower(%c)\n", PTR(ptr), pattern[0])); if (ptr >= end || state->lower(*ptr) == state->lower(*pattern)) goto failure; @@ -549,7 +548,7 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) case SRE_OP_IN_IGNORE: TRACE(("%8d: set lower(%c)\n", PTR(ptr), *ptr)); if (ptr >= end - || !SRE_MEMBER(pattern+1, (SRE_CHAR) state->lower(*ptr))) + || !SRE_MEMBER(pattern+1, (SRE_CODE) state->lower(*ptr))) goto failure; pattern += pattern[0]; ptr++; @@ -631,9 +630,9 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) } else if (pattern[3] == SRE_OP_LITERAL) { /* repeated literal */ - SRE_CHAR chr = (SRE_CHAR) pattern[4]; + SRE_CODE chr = pattern[4]; while (count < (int) pattern[2]) { - if (ptr >= end || *ptr != chr) + if (ptr >= end || (SRE_CODE) ptr[0] != chr) break; ptr++; count++; @@ -641,9 +640,9 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) } else if (pattern[3] == SRE_OP_LITERAL_IGNORE) { /* repeated literal */ - SRE_CHAR chr = (SRE_CHAR) pattern[4]; + SRE_CODE chr = pattern[4]; while (count < (int) pattern[2]) { - if (ptr >= end || (SRE_CHAR) state->lower(*ptr) != chr) + if (ptr >= end || (SRE_CODE) state->lower(*ptr) != chr) break; ptr++; count++; @@ -651,9 +650,9 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) } else if (pattern[3] == SRE_OP_NOT_LITERAL) { /* repeated non-literal */ - SRE_CHAR chr = (SRE_CHAR) pattern[4]; + SRE_CODE chr = pattern[4]; while (count < (int) pattern[2]) { - if (ptr >= end || *ptr == chr) + if (ptr >= end || (SRE_CODE) ptr[0] == chr) break; ptr++; count++; @@ -661,9 +660,9 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) } else if (pattern[3] == SRE_OP_NOT_LITERAL_IGNORE) { /* repeated non-literal */ - SRE_CHAR chr = (SRE_CHAR) pattern[4]; + SRE_CODE chr = pattern[4]; while (count < (int) pattern[2]) { - if (ptr >= end || (SRE_CHAR) state->lower(*ptr) == chr) + if (ptr >= end || (SRE_CODE) state->lower(ptr[0]) == chr) break; ptr++; count++; @@ -712,7 +711,7 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) } else if (pattern[pattern[0]] == SRE_OP_LITERAL) { /* tail starts with a literal. skip positions where the rest of the pattern cannot possibly match */ - SRE_CHAR chr = (SRE_CHAR) pattern[pattern[0]+1]; + SRE_CODE chr = pattern[pattern[0]+1]; TRACE(("%8d: tail is literal %d\n", PTR(ptr), chr)); for (;;) { TRACE(("%8d: scan for tail match\n", PTR(ptr))); @@ -868,7 +867,7 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern) TRACE(("%8d: branch\n", PTR(ptr))); while (*pattern) { if (pattern[1] != SRE_OP_LITERAL || - (ptr < end && *ptr == (SRE_CHAR) pattern[2])) { + (ptr < end && (SRE_CODE) ptr[0] == pattern[2])) { TRACE(("%8d: branch check\n", PTR(ptr))); state->ptr = ptr; i = SRE_MATCH(state, pattern + 1); @@ -976,7 +975,7 @@ SRE_SEARCH(SRE_STATE* state, SRE_CODE* pattern) end = state->end; while (ptr < end) { for (;;) { - if (*ptr != (SRE_CHAR) prefix[i]) { + if ((SRE_CODE) ptr[0] != prefix[i]) { if (!i) break; else @@ -1008,9 +1007,9 @@ SRE_SEARCH(SRE_STATE* state, SRE_CODE* pattern) if (pattern[0] == SRE_OP_LITERAL) { /* pattern starts with a literal character. this is used for short prefixes, and if fast search is disabled*/ - SRE_CHAR chr = (SRE_CHAR) pattern[1]; + SRE_CODE chr = pattern[1]; for (;;) { - while (ptr < end && *ptr != chr) + while (ptr < end && (SRE_CODE) ptr[0] != chr) ptr++; if (ptr == end) return 0; |