[Python-checkins] CVS: python/dist/src/Lib sre.py,1.15,1.16 sre_compile.py,1.13,1.14 sre_parse.py,1.12,1.13
Fredrik Lundh
python-dev@python.org
Fri, 30 Jun 2000 00:51:01 -0700
Update of /cvsroot/python/python/dist/src/Lib
In directory slayer.i.sourceforge.net:/tmp/cvs-serv24009/Lib
Modified Files:
sre.py sre_compile.py sre_parse.py
Log Message:
- pedantic: make sure "python -t" doesn't complain...
Index: sre.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/sre.py,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -r1.15 -r1.16
*** sre.py 2000/06/30 07:05:47 1.15
--- sre.py 2000/06/30 07:50:59 1.16
***************
*** 99,103 ****
filter = template
else:
! template = sre_parse.parse_template(template, pattern)
def filter(match, template=template):
return sre_parse.expand_template(template, match)
--- 99,103 ----
filter = template
else:
! template = sre_parse.parse_template(template, pattern)
def filter(match, template=template):
return sre_parse.expand_template(template, match)
***************
*** 110,118 ****
if not m:
break
! b, e = m.span()
if i < b:
append(string[i:b])
append(filter(m))
! i = e
n = n + 1
append(string[i:])
--- 110,118 ----
if not m:
break
! b, e = m.span()
if i < b:
append(string[i:b])
append(filter(m))
! i = e
n = n + 1
append(string[i:])
***************
*** 131,143 ****
if not m:
break
! b, e = m.span()
! if b == e:
! if i >= len(string):
! break
! continue
append(string[i:b])
! if g and b != e:
! extend(m.groups())
! i = e
n = n + 1
append(string[i:])
--- 131,143 ----
if not m:
break
! b, e = m.span()
! if b == e:
! if i >= len(string):
! break
! continue
append(string[i:b])
! if g and b != e:
! extend(m.groups())
! i = e
n = n + 1
append(string[i:])
Index: sre_compile.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/sre_compile.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** sre_compile.py 2000/06/30 00:27:45 1.13
--- sre_compile.py 2000/06/30 07:50:59 1.14
***************
*** 19,23 ****
for WORDSIZE in "BHil":
if len(array.array(WORDSIZE, [0]).tostring()) == _sre.getcodesize():
! break
else:
raise RuntimeError, "cannot find a useable array type"
--- 19,23 ----
for WORDSIZE in "BHil":
if len(array.array(WORDSIZE, [0]).tostring()) == _sre.getcodesize():
! break
else:
raise RuntimeError, "cannot find a useable array type"
***************
*** 27,156 ****
emit = code.append
for op, av in pattern:
! if op is ANY:
! if flags & SRE_FLAG_DOTALL:
! emit(OPCODES[op])
! else:
! emit(OPCODES[CATEGORY])
! emit(CHCODES[CATEGORY_NOT_LINEBREAK])
! elif op in (SUCCESS, FAILURE):
! emit(OPCODES[op])
! elif op is AT:
! emit(OPCODES[op])
! if flags & SRE_FLAG_MULTILINE:
! emit(ATCODES[AT_MULTILINE[av]])
! else:
! emit(ATCODES[av])
! elif op is BRANCH:
! emit(OPCODES[op])
! tail = []
! for av in av[1]:
! skip = len(code); emit(0)
! _compile(code, av, flags)
! emit(OPCODES[JUMP])
! tail.append(len(code)); emit(0)
! code[skip] = len(code) - skip
! emit(0) # end of branch
! for tail in tail:
! code[tail] = len(code) - tail
! elif op is CALL:
! emit(OPCODES[op])
! skip = len(code); emit(0)
! _compile(code, av, flags)
! emit(OPCODES[SUCCESS])
! code[skip] = len(code) - skip
! elif op is CATEGORY:
! emit(OPCODES[op])
! if flags & SRE_FLAG_LOCALE:
! emit(CHCODES[CH_LOCALE[av]])
! elif flags & SRE_FLAG_UNICODE:
! emit(CHCODES[CH_UNICODE[av]])
! else:
! emit(CHCODES[av])
! elif op is GROUP:
! if flags & SRE_FLAG_IGNORECASE:
! emit(OPCODES[OP_IGNORE[op]])
! else:
! emit(OPCODES[op])
! emit(av-1)
! elif op is IN:
! if flags & SRE_FLAG_IGNORECASE:
! emit(OPCODES[OP_IGNORE[op]])
! def fixup(literal, flags=flags):
! return _sre.getlower(ord(literal), flags)
! else:
! emit(OPCODES[op])
! fixup = ord
! skip = len(code); emit(0)
! for op, av in av:
! emit(OPCODES[op])
! if op is NEGATE:
! pass
! elif op is LITERAL:
! emit(fixup(av))
! elif op is RANGE:
! emit(fixup(av[0]))
! emit(fixup(av[1]))
! elif op is CATEGORY:
! if flags & SRE_FLAG_LOCALE:
! emit(CHCODES[CH_LOCALE[av]])
! elif flags & SRE_FLAG_UNICODE:
! emit(CHCODES[CH_UNICODE[av]])
! else:
! emit(CHCODES[av])
! else:
! raise error, "internal: unsupported set operator"
! emit(OPCODES[FAILURE])
! code[skip] = len(code) - skip
! elif op in (LITERAL, NOT_LITERAL):
! if flags & SRE_FLAG_IGNORECASE:
! emit(OPCODES[OP_IGNORE[op]])
! else:
! emit(OPCODES[op])
! emit(ord(av))
! elif op is MARK:
! emit(OPCODES[op])
! emit(av)
! elif op in (REPEAT, MIN_REPEAT, MAX_REPEAT):
! if flags & SRE_FLAG_TEMPLATE:
! emit(OPCODES[REPEAT])
! skip = len(code); emit(0)
! emit(av[0])
! emit(av[1])
! _compile(code, av[2], flags)
! emit(OPCODES[SUCCESS])
! code[skip] = len(code) - skip
! else:
! lo, hi = av[2].getwidth()
! if lo == 0:
! raise error, "nothing to repeat"
! if 0 and lo == hi == 1 and op is MAX_REPEAT:
! # FIXME: <fl> need a better way to figure out when
! # it's safe to use this one (in the parser, probably)
! emit(OPCODES[MAX_REPEAT_ONE])
! skip = len(code); emit(0)
! emit(av[0])
! emit(av[1])
! _compile(code, av[2], flags)
! emit(OPCODES[SUCCESS])
! code[skip] = len(code) - skip
! else:
! emit(OPCODES[op])
! skip = len(code); emit(0)
! emit(av[0])
! emit(av[1])
! _compile(code, av[2], flags)
! emit(OPCODES[SUCCESS])
! code[skip] = len(code) - skip
! elif op is SUBPATTERN:
! group = av[0]
! if group:
! emit(OPCODES[MARK])
! emit((group-1)*2)
! _compile(code, av[1], flags)
! if group:
! emit(OPCODES[MARK])
! emit((group-1)*2+1)
! else:
! raise ValueError, ("unsupported operand type", op)
def _compile_info(code, pattern, flags):
--- 27,156 ----
emit = code.append
for op, av in pattern:
! if op is ANY:
! if flags & SRE_FLAG_DOTALL:
! emit(OPCODES[op])
! else:
! emit(OPCODES[CATEGORY])
! emit(CHCODES[CATEGORY_NOT_LINEBREAK])
! elif op in (SUCCESS, FAILURE):
! emit(OPCODES[op])
! elif op is AT:
! emit(OPCODES[op])
! if flags & SRE_FLAG_MULTILINE:
! emit(ATCODES[AT_MULTILINE[av]])
! else:
! emit(ATCODES[av])
! elif op is BRANCH:
! emit(OPCODES[op])
! tail = []
! for av in av[1]:
! skip = len(code); emit(0)
! _compile(code, av, flags)
! emit(OPCODES[JUMP])
! tail.append(len(code)); emit(0)
! code[skip] = len(code) - skip
! emit(0) # end of branch
! for tail in tail:
! code[tail] = len(code) - tail
! elif op is CALL:
! emit(OPCODES[op])
! skip = len(code); emit(0)
! _compile(code, av, flags)
! emit(OPCODES[SUCCESS])
! code[skip] = len(code) - skip
! elif op is CATEGORY:
! emit(OPCODES[op])
! if flags & SRE_FLAG_LOCALE:
! emit(CHCODES[CH_LOCALE[av]])
! elif flags & SRE_FLAG_UNICODE:
! emit(CHCODES[CH_UNICODE[av]])
! else:
! emit(CHCODES[av])
! elif op is GROUP:
! if flags & SRE_FLAG_IGNORECASE:
! emit(OPCODES[OP_IGNORE[op]])
! else:
! emit(OPCODES[op])
! emit(av-1)
! elif op is IN:
! if flags & SRE_FLAG_IGNORECASE:
! emit(OPCODES[OP_IGNORE[op]])
! def fixup(literal, flags=flags):
! return _sre.getlower(ord(literal), flags)
! else:
! emit(OPCODES[op])
! fixup = ord
! skip = len(code); emit(0)
! for op, av in av:
! emit(OPCODES[op])
! if op is NEGATE:
! pass
! elif op is LITERAL:
! emit(fixup(av))
! elif op is RANGE:
! emit(fixup(av[0]))
! emit(fixup(av[1]))
! elif op is CATEGORY:
! if flags & SRE_FLAG_LOCALE:
! emit(CHCODES[CH_LOCALE[av]])
! elif flags & SRE_FLAG_UNICODE:
! emit(CHCODES[CH_UNICODE[av]])
! else:
! emit(CHCODES[av])
! else:
! raise error, "internal: unsupported set operator"
! emit(OPCODES[FAILURE])
! code[skip] = len(code) - skip
! elif op in (LITERAL, NOT_LITERAL):
! if flags & SRE_FLAG_IGNORECASE:
! emit(OPCODES[OP_IGNORE[op]])
! else:
! emit(OPCODES[op])
! emit(ord(av))
! elif op is MARK:
! emit(OPCODES[op])
! emit(av)
! elif op in (REPEAT, MIN_REPEAT, MAX_REPEAT):
! if flags & SRE_FLAG_TEMPLATE:
! emit(OPCODES[REPEAT])
! skip = len(code); emit(0)
! emit(av[0])
! emit(av[1])
! _compile(code, av[2], flags)
! emit(OPCODES[SUCCESS])
! code[skip] = len(code) - skip
! else:
! lo, hi = av[2].getwidth()
! if lo == 0:
! raise error, "nothing to repeat"
! if 0 and lo == hi == 1 and op is MAX_REPEAT:
! # FIXME: <fl> need a better way to figure out when
! # it's safe to use this one (in the parser, probably)
! emit(OPCODES[MAX_REPEAT_ONE])
! skip = len(code); emit(0)
! emit(av[0])
! emit(av[1])
! _compile(code, av[2], flags)
! emit(OPCODES[SUCCESS])
! code[skip] = len(code) - skip
! else:
! emit(OPCODES[op])
! skip = len(code); emit(0)
! emit(av[0])
! emit(av[1])
! _compile(code, av[2], flags)
! emit(OPCODES[SUCCESS])
! code[skip] = len(code) - skip
! elif op is SUBPATTERN:
! group = av[0]
! if group:
! emit(OPCODES[MARK])
! emit((group-1)*2)
! _compile(code, av[1], flags)
! if group:
! emit(OPCODES[MARK])
! emit((group-1)*2+1)
! else:
! raise ValueError, ("unsupported operand type", op)
def _compile_info(code, pattern, flags):
***************
*** 160,172 ****
lo, hi = pattern.getwidth()
if lo == 0:
! return # not worth it
# look for a literal prefix
prefix = []
if not (flags & SRE_FLAG_IGNORECASE):
! for op, av in pattern.data:
! if op is LITERAL:
! prefix.append(ord(av))
! else:
! break
# add an info block
emit = code.append
--- 160,172 ----
lo, hi = pattern.getwidth()
if lo == 0:
! return # not worth it
# look for a literal prefix
prefix = []
if not (flags & SRE_FLAG_IGNORECASE):
! for op, av in pattern.data:
! if op is LITERAL:
! prefix.append(ord(av))
! else:
! break
# add an info block
emit = code.append
***************
*** 176,198 ****
mask = 0
if len(prefix) == len(pattern.data):
! mask = 1
emit(mask)
# pattern length
emit(lo)
if hi < 32768:
! emit(hi)
else:
! emit(0)
# add literal prefix
emit(len(prefix))
if prefix:
! code.extend(prefix)
! # generate overlap table
! table = [-1] + ([0]*len(prefix))
! for i in range(len(prefix)):
! table[i+1] = table[i]+1
! while table[i+1] > 0 and prefix[i] != prefix[table[i+1]-1]:
! table[i+1] = table[table[i+1]-1]+1
! code.extend(table[1:]) # don't store first entry
code[skip] = len(code) - skip
--- 176,198 ----
mask = 0
if len(prefix) == len(pattern.data):
! mask = 1
emit(mask)
# pattern length
emit(lo)
if hi < 32768:
! emit(hi)
else:
! emit(0)
# add literal prefix
emit(len(prefix))
if prefix:
! code.extend(prefix)
! # generate overlap table
! table = [-1] + ([0]*len(prefix))
! for i in range(len(prefix)):
! table[i+1] = table[i]+1
! while table[i+1] > 0 and prefix[i] != prefix[table[i+1]-1]:
! table[i+1] = table[table[i+1]-1]+1
! code.extend(table[1:]) # don't store first entry
code[skip] = len(code) - skip
***************
*** 202,210 ****
# compile, as necessary
if type(p) in (type(""), type(u"")):
! import sre_parse
! pattern = p
! p = sre_parse.parse(p)
else:
! pattern = None
flags = p.pattern.flags | flags
--- 202,210 ----
# compile, as necessary
if type(p) in (type(""), type(u"")):
! import sre_parse
! pattern = p
! p = sre_parse.parse(p)
else:
! pattern = None
flags = p.pattern.flags | flags
***************
*** 221,229 ****
# FIXME: <fl> get rid of this limitation!
assert p.pattern.groups <= 100,\
! "sorry, but this version only supports 100 named groups"
return _sre.compile(
! pattern, flags,
! array.array(WORDSIZE, code).tostring(),
! p.pattern.groups-1, p.pattern.groupdict
! )
--- 221,229 ----
# FIXME: <fl> get rid of this limitation!
assert p.pattern.groups <= 100,\
! "sorry, but this version only supports 100 named groups"
return _sre.compile(
! pattern, flags,
! array.array(WORDSIZE, code).tostring(),
! p.pattern.groups-1, p.pattern.groupdict
! )
Index: sre_parse.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/sre_parse.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** sre_parse.py 2000/06/30 00:27:45 1.12
--- sre_parse.py 2000/06/30 07:50:59 1.13
***************
*** 68,171 ****
class State:
def __init__(self):
! self.flags = 0
! self.groups = 1
! self.groupdict = {}
def getgroup(self, name=None):
! gid = self.groups
! self.groups = gid + 1
! if name:
! self.groupdict[name] = gid
[...982 lines suppressed...]
for c, s in template:
! if c is LITERAL:
! a(s)
! elif c is MARK:
! s = match.group(s)
! if s is None:
! raise error, "empty group"
! a(s)
return match.string[:0].join(p)
--- 593,602 ----
a = p.append
for c, s in template:
! if c is LITERAL:
! a(s)
! elif c is MARK:
! s = match.group(s)
! if s is None:
! raise error, "empty group"
! a(s)
return match.string[:0].join(p)