mirror of https://github.com/python/cpython.git
Translated to use re instead of regex. Also replaced one use of
L.append(a,b,c,d) with the correct L.append((a,b,c,d)).
This commit is contained in:
parent
1b0ff2c32f
commit
f57736e77a
|
@ -77,7 +77,7 @@
|
||||||
TABSIZE = 8
|
TABSIZE = 8
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import regex
|
import re
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
@ -100,15 +100,15 @@ def __init__(self, fpi = sys.stdin, fpo = sys.stdout,
|
||||||
self.tabsize = tabsize
|
self.tabsize = tabsize
|
||||||
self.lineno = 0
|
self.lineno = 0
|
||||||
self.write = fpo.write
|
self.write = fpo.write
|
||||||
self.kwprog = regex.symcomp(
|
self.kwprog = re.compile(
|
||||||
'^[ \t]*\(<kw>[a-z]+\)'
|
r'^\s*(?P<kw>[a-z]+)'
|
||||||
'\([ \t]+\(<id>[a-zA-Z_][a-zA-Z0-9_]*\)\)?'
|
r'(\s+(?P<id>[a-zA-Z_]\w*))?'
|
||||||
'[^a-zA-Z0-9_]')
|
r'[^\w]')
|
||||||
self.endprog = regex.symcomp(
|
self.endprog = re.compile(
|
||||||
'^[ \t]*#?[ \t]*end[ \t]+\(<kw>[a-z]+\)'
|
r'^\s*#?\s*end\s+(?P<kw>[a-z]+)'
|
||||||
'\([ \t]+\(<id>[a-zA-Z_][a-zA-Z0-9_]*\)\)?'
|
r'(\s+(?P<id>[a-zA-Z_]\w*))?'
|
||||||
'[^a-zA-Z0-9_]')
|
r'[^\w]')
|
||||||
self.wsprog = regex.compile('^[ \t]*')
|
self.wsprog = re.compile(r'^[ \t]*')
|
||||||
# end def __init__
|
# end def __init__
|
||||||
|
|
||||||
def readline(self):
|
def readline(self):
|
||||||
|
@ -142,7 +142,10 @@ def putline(self, line, indent = None):
|
||||||
return
|
return
|
||||||
# end if
|
# end if
|
||||||
tabs, spaces = divmod(indent*self.indentsize, self.tabsize)
|
tabs, spaces = divmod(indent*self.indentsize, self.tabsize)
|
||||||
i = max(0, self.wsprog.match(line))
|
i = 0
|
||||||
|
m = self.wsprog.match(line)
|
||||||
|
if m: i = m.end()
|
||||||
|
# end if
|
||||||
self.write('\t'*tabs + ' '*spaces + line[i:])
|
self.write('\t'*tabs + ' '*spaces + line[i:])
|
||||||
# end def putline
|
# end def putline
|
||||||
|
|
||||||
|
@ -152,9 +155,10 @@ def reformat(self):
|
||||||
line = self.getline()
|
line = self.getline()
|
||||||
if not line: break # EOF
|
if not line: break # EOF
|
||||||
# end if
|
# end if
|
||||||
if self.endprog.match(line) >= 0:
|
m = self.endprog.match(line)
|
||||||
|
if m:
|
||||||
kw = 'end'
|
kw = 'end'
|
||||||
kw2 = self.endprog.group('kw')
|
kw2 = m.group('kw')
|
||||||
if not stack:
|
if not stack:
|
||||||
self.error('unexpected end')
|
self.error('unexpected end')
|
||||||
elif stack[-1][0] != kw2:
|
elif stack[-1][0] != kw2:
|
||||||
|
@ -164,8 +168,9 @@ def reformat(self):
|
||||||
self.putline(line, len(stack))
|
self.putline(line, len(stack))
|
||||||
continue
|
continue
|
||||||
# end if
|
# end if
|
||||||
if self.kwprog.match(line) >= 0:
|
m = self.kwprog.match(line)
|
||||||
kw = self.kwprog.group('kw')
|
if m:
|
||||||
|
kw = m.group('kw')
|
||||||
if kw in start:
|
if kw in start:
|
||||||
self.putline(line, len(stack))
|
self.putline(line, len(stack))
|
||||||
stack.append((kw, kw))
|
stack.append((kw, kw))
|
||||||
|
@ -195,26 +200,33 @@ def complete(self):
|
||||||
current, firstkw, lastkw, topid = 0, '', '', ''
|
current, firstkw, lastkw, topid = 0, '', '', ''
|
||||||
while 1:
|
while 1:
|
||||||
line = self.getline()
|
line = self.getline()
|
||||||
i = max(0, self.wsprog.match(line))
|
i = 0
|
||||||
if self.endprog.match(line) >= 0:
|
m = self.wsprog.match(line)
|
||||||
|
if m: i = m.end()
|
||||||
|
# end if
|
||||||
|
m = self.endprog.match(line)
|
||||||
|
if m:
|
||||||
thiskw = 'end'
|
thiskw = 'end'
|
||||||
endkw = self.endprog.group('kw')
|
endkw = m.group('kw')
|
||||||
thisid = self.endprog.group('id')
|
thisid = m.group('id')
|
||||||
elif self.kwprog.match(line) >= 0:
|
else:
|
||||||
thiskw = self.kwprog.group('kw')
|
m = self.kwprog.match(line)
|
||||||
if not next.has_key(thiskw):
|
if m:
|
||||||
|
thiskw = m.group('kw')
|
||||||
|
if not next.has_key(thiskw):
|
||||||
|
thiskw = ''
|
||||||
|
# end if
|
||||||
|
if thiskw in ('def', 'class'):
|
||||||
|
thisid = m.group('id')
|
||||||
|
else:
|
||||||
|
thisid = ''
|
||||||
|
# end if
|
||||||
|
elif line[i:i+1] in ('\n', '#'):
|
||||||
|
todo.append(line)
|
||||||
|
continue
|
||||||
|
else:
|
||||||
thiskw = ''
|
thiskw = ''
|
||||||
# end if
|
# end if
|
||||||
if thiskw in ('def', 'class'):
|
|
||||||
thisid = self.kwprog.group('id')
|
|
||||||
else:
|
|
||||||
thisid = ''
|
|
||||||
# end if
|
|
||||||
elif line[i:i+1] in ('\n', '#'):
|
|
||||||
todo.append(line)
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
thiskw = ''
|
|
||||||
# end if
|
# end if
|
||||||
indent = len(string.expandtabs(line[:i], self.tabsize))
|
indent = len(string.expandtabs(line[:i], self.tabsize))
|
||||||
while indent < current:
|
while indent < current:
|
||||||
|
@ -249,7 +261,7 @@ def complete(self):
|
||||||
# end if
|
# end if
|
||||||
# end if
|
# end if
|
||||||
if indent > current:
|
if indent > current:
|
||||||
stack.append(current, firstkw, lastkw, topid)
|
stack.append((current, firstkw, lastkw, topid))
|
||||||
if thiskw and thiskw not in start:
|
if thiskw and thiskw not in start:
|
||||||
# error
|
# error
|
||||||
thiskw = ''
|
thiskw = ''
|
||||||
|
|
Loading…
Reference in New Issue