mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	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
					
				
					 1 changed files with 45 additions and 33 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Guido van Rossum
						Guido van Rossum