diff options
Diffstat (limited to 'Lib/dos-8x3/sre_pars.py')
-rw-r--r-- | Lib/dos-8x3/sre_pars.py | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/Lib/dos-8x3/sre_pars.py b/Lib/dos-8x3/sre_pars.py index fb954e9..53616f6 100644 --- a/Lib/dos-8x3/sre_pars.py +++ b/Lib/dos-8x3/sre_pars.py @@ -19,8 +19,9 @@ from sre_constants import * # FIXME: should be 65535, but the arraymodule is still broken MAXREPEAT = 32767 -# FIXME: same here -CHARMASK = 0x7fff +# FIXME: might change in 2.0 final. but for now, this seems +# to be the best way to be compatible with 1.5.2 +CHARMASK = 0xff SPECIAL_CHARS = ".\\[{()*+?^$|" REPEAT_CHARS = "*+?{" @@ -30,7 +31,7 @@ DIGITS = tuple(string.digits) OCTDIGITS = tuple("01234567") HEXDIGITS = tuple("0123456789abcdefABCDEF") -WHITESPACE = string.whitespace +WHITESPACE = tuple(string.whitespace) ESCAPES = { r"\a": (LITERAL, 7), @@ -295,7 +296,7 @@ def _branch(pattern, items): subpattern.append((BRANCH, (None, items))) return subpattern -def _parse(source, state, flags=0): +def _parse(source, state): # parse regular expression pattern into an operator list. @@ -467,7 +468,7 @@ def _parse(source, state, flags=0): char = source.get() b = [] while 1: - p = _parse(source, state, flags) + p = _parse(source, state) if source.next == ")": if b: b.append(p) @@ -494,7 +495,7 @@ def _parse(source, state, flags=0): else: group = state.getgroup(name) while 1: - p = _parse(source, state, flags) + p = _parse(source, state) if source.match(")"): if b: b.append(p) @@ -531,9 +532,10 @@ def parse(pattern, flags=0): # parse 're' pattern into list of (opcode, argument) tuples source = Tokenizer(pattern) state = State() + state.flags = flags b = [] while 1: - p = _parse(source, state, flags) + p = _parse(source, state) tail = source.get() if tail == "|": b.append(p) @@ -616,9 +618,9 @@ def expand_template(template, match): a = p.append sep = match.string[:0] if type(sep) is type(""): - char = chr + char = chr else: - char = unichr + char = unichr for c, s in template: if c is LITERAL: a(char(s)) |