Kaydet (Commit) 2f2c67d7 authored tarafından Fredrik Lundh's avatar Fredrik Lundh

-- 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)
üst 329e2919
......@@ -270,6 +270,7 @@ def _compile_info(code, pattern, flags):
table[i+1] = table[table[i+1]-1]+1
code.extend(table[1:]) # don't store first entry
elif charset:
# FIXME: use charset optimizer!
for char in charset:
emit(OPCODES[LITERAL])
emit(char)
......@@ -283,7 +284,7 @@ try:
except NameError:
pass
def _compile1(p, flags):
def _code(p, flags):
flags = p.pattern.flags | flags
code = []
......@@ -308,7 +309,7 @@ def compile(p, flags=0):
else:
pattern = None
code = _compile1(p, flags)
code = _code(p, flags)
# print code
......
......@@ -137,12 +137,12 @@ class SubPattern:
lo = hi = 0L
for op, av in self.data:
if op is BRANCH:
l = sys.maxint
h = 0
i = sys.maxint
j = 0
for av in av[1]:
i, j = av.getwidth()
l = min(l, i)
h = min(h, j)
l, h = av.getwidth()
i = min(i, l)
j = min(j, h)
lo = lo + i
hi = hi + j
elif op is CALL:
......
This diff is collapsed.
......@@ -74,6 +74,8 @@ typedef struct {
SRE_REPEAT *repeat; /* current repeat context */
/* hooks */
SRE_TOLOWER_HOOK lower;
/* debugging */
int maxlevel;
} SRE_STATE;
typedef struct {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment