mirror of
https://github.com/python/cpython.git
synced 2025-08-30 21:48:47 +00:00
-- SRE 0.9.6 sync. this includes:
+ added "regs" attribute + fixed "pos" and "endpos" attributes + reset "lastindex" and "lastgroup" in scanner methods + removed (?P#id) syntax; the "lastindex" and "lastgroup" attributes are now always set + removed string module dependencies in sre_parse + better debugging support in sre_parse + various tweaks to build under 1.5.2
This commit is contained in:
parent
4f1b2081e9
commit
8a3ebf8ca8
7 changed files with 1265 additions and 1138 deletions
|
@ -197,10 +197,11 @@ def _compile(code, pattern, flags):
|
|||
else:
|
||||
emit(ATCODES[av])
|
||||
elif op is BRANCH:
|
||||
emit(OPCODES[op])
|
||||
tail = []
|
||||
for av in av[1]:
|
||||
emit(OPCODES[op])
|
||||
skip = len(code); emit(0)
|
||||
emit(MAXCODE) # save mark
|
||||
_compile(code, av, flags)
|
||||
emit(OPCODES[JUMP])
|
||||
tail.append(len(code)); emit(0)
|
||||
|
@ -286,11 +287,18 @@ def _compile_info(code, pattern, flags):
|
|||
emit(OPCODES[FAILURE])
|
||||
code[skip] = len(code) - skip
|
||||
|
||||
STRING_TYPES = [type("")]
|
||||
|
||||
try:
|
||||
STRING_TYPES.append(type(unicode("")))
|
||||
except NameError:
|
||||
pass
|
||||
|
||||
def compile(p, flags=0):
|
||||
# internal: convert pattern list to internal format
|
||||
|
||||
# compile, as necessary
|
||||
if type(p) in (type(""), type(u"")):
|
||||
if type(p) in STRING_TYPES:
|
||||
import sre_parse
|
||||
pattern = p
|
||||
p = sre_parse.parse(p, flags)
|
||||
|
@ -308,6 +316,8 @@ def compile(p, flags=0):
|
|||
|
||||
code.append(OPCODES[SUCCESS])
|
||||
|
||||
# print code
|
||||
|
||||
# FIXME: <fl> get rid of this limitation!
|
||||
assert p.pattern.groups <= 100,\
|
||||
"sorry, but this version only supports 100 named groups"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue