mirror of
https://github.com/python/cpython.git
synced 2025-07-30 06:34:15 +00:00
Merged revisions 65053-65054 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r65053 | benjamin.peterson | 2008-07-16 21:04:12 -0500 (Wed, 16 Jul 2008) | 1 line massive optimizations for 2to3 (especially fix_imports) from Nick Edds ........ r65054 | benjamin.peterson | 2008-07-16 21:05:09 -0500 (Wed, 16 Jul 2008) | 1 line normalize whitespace ........
This commit is contained in:
parent
a66bb0a741
commit
1ab3149063
4 changed files with 100 additions and 340 deletions
|
@ -652,20 +652,35 @@ class WildcardPattern(BasePattern):
|
|||
if self.name:
|
||||
r[self.name] = nodes[:count]
|
||||
yield count, r
|
||||
elif self.name == "bare_name":
|
||||
yield self._bare_name_matches(nodes)
|
||||
else:
|
||||
for count, r in self._recursive_matches(nodes, 0):
|
||||
if self.name:
|
||||
r[self.name] = nodes[:count]
|
||||
yield count, r
|
||||
|
||||
def _bare_name_matches(self, nodes):
|
||||
"""Special optimized matcher for bare_name."""
|
||||
count = 0
|
||||
r = {}
|
||||
done = False
|
||||
max = len(nodes)
|
||||
while not done and count < max:
|
||||
done = True
|
||||
for leaf in self.content:
|
||||
if leaf[0].match(nodes[count], r):
|
||||
count += 1
|
||||
done = False
|
||||
break
|
||||
r[self.name] = nodes[:count]
|
||||
return count, r
|
||||
|
||||
def _recursive_matches(self, nodes, count):
|
||||
"""Helper to recursively yield the matches."""
|
||||
assert self.content is not None
|
||||
if count >= self.min:
|
||||
r = {}
|
||||
if self.name:
|
||||
r[self.name] = nodes[:0]
|
||||
yield 0, r
|
||||
yield 0, {}
|
||||
if count < self.max:
|
||||
for alt in self.content:
|
||||
for c0, r0 in generate_matches(alt, nodes):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue