Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2f2c67d

Browse files
author
Fredrik Lundh
committed
-- fixed width calculations for alternations
-- fixed literal check in branch operator (this broke test_tokenize, as reported by Mark Favas) -- added REPEAT_ONE operator (still not enabled, though) -- added some debugging stuff (maxlevel)
1 parent 329e291 commit 2f2c67d

4 files changed

Lines changed: 199 additions & 35 deletions

File tree

Lib/sre_compile.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ def _compile_info(code, pattern, flags):
270270
table[i+1] = table[table[i+1]-1]+1
271271
code.extend(table[1:]) # don't store first entry
272272
elif charset:
273+
# FIXME: use charset optimizer!
273274
for char in charset:
274275
emit(OPCODES[LITERAL])
275276
emit(char)
@@ -283,7 +284,7 @@ def _compile_info(code, pattern, flags):
283284
except NameError:
284285
pass
285286

286-
def _compile1(p, flags):
287+
def _code(p, flags):
287288

288289
flags = p.pattern.flags | flags
289290
code = []
@@ -308,7 +309,7 @@ def compile(p, flags=0):
308309
else:
309310
pattern = None
310311

311-
code = _compile1(p, flags)
312+
code = _code(p, flags)
312313

313314
# print code
314315

Lib/sre_parse.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,12 @@ def getwidth(self):
137137
lo = hi = 0L
138138
for op, av in self.data:
139139
if op is BRANCH:
140-
l = sys.maxint
141-
h = 0
140+
i = sys.maxint
141+
j = 0
142142
for av in av[1]:
143-
i, j = av.getwidth()
144-
l = min(l, i)
145-
h = min(h, j)
143+
l, h = av.getwidth()
144+
i = min(i, l)
145+
j = min(j, h)
146146
lo = lo + i
147147
hi = hi + j
148148
elif op is CALL:

0 commit comments

Comments
 (0)