71
71
class Verbose (Exception ):
72
72
pass
73
73
74
- class Pattern :
75
- # main pattern object. keeps track of global attributes
74
+ class State :
75
+ # keeps track of state for parsing
76
76
def __init__ (self ):
77
77
self .flags = 0
78
78
self .groupdict = {}
@@ -108,8 +108,8 @@ def checklookbehindgroup(self, gid, source):
108
108
109
109
class SubPattern :
110
110
# a subpattern, in intermediate form
111
- def __init__ (self , pattern , data = None ):
112
- self .pattern = pattern
111
+ def __init__ (self , state , data = None ):
112
+ self .state = state
113
113
if data is None :
114
114
data = []
115
115
self .data = data
@@ -163,7 +163,7 @@ def __delitem__(self, index):
163
163
del self .data [index ]
164
164
def __getitem__ (self , index ):
165
165
if isinstance (index , slice ):
166
- return SubPattern (self .pattern , self .data [index ])
166
+ return SubPattern (self .state , self .data [index ])
167
167
return self .data [index ]
168
168
def __setitem__ (self , index , code ):
169
169
self .data [index ] = code
@@ -202,7 +202,7 @@ def getwidth(self):
202
202
lo = lo + 1
203
203
hi = hi + 1
204
204
elif op is GROUPREF :
205
- i , j = self .pattern .groupwidths [av ]
205
+ i , j = self .state .groupwidths [av ]
206
206
lo = lo + i
207
207
hi = hi + j
208
208
elif op is GROUPREF_EXISTS :
@@ -940,28 +940,28 @@ def fix_flags(src, flags):
940
940
raise ValueError ("ASCII and LOCALE flags are incompatible" )
941
941
return flags
942
942
943
- def parse (str , flags = 0 , pattern = None ):
943
+ def parse (str , flags = 0 , state = None ):
944
944
# parse 're' pattern into list of (opcode, argument) tuples
945
945
946
946
source = Tokenizer (str )
947
947
948
- if pattern is None :
949
- pattern = Pattern ()
950
- pattern .flags = flags
951
- pattern .str = str
948
+ if state is None :
949
+ state = State ()
950
+ state .flags = flags
951
+ state .str = str
952
952
953
953
try :
954
- p = _parse_sub (source , pattern , flags & SRE_FLAG_VERBOSE , 0 )
954
+ p = _parse_sub (source , state , flags & SRE_FLAG_VERBOSE , 0 )
955
955
except Verbose :
956
956
# the VERBOSE flag was switched on inside the pattern. to be
957
957
# on the safe side, we'll parse the whole thing again...
958
- pattern = Pattern ()
959
- pattern .flags = flags | SRE_FLAG_VERBOSE
960
- pattern .str = str
958
+ state = State ()
959
+ state .flags = flags | SRE_FLAG_VERBOSE
960
+ state .str = str
961
961
source .seek (0 )
962
- p = _parse_sub (source , pattern , True , 0 )
962
+ p = _parse_sub (source , state , True , 0 )
963
963
964
- p .pattern .flags = fix_flags (str , p .pattern .flags )
964
+ p .state .flags = fix_flags (str , p .state .flags )
965
965
966
966
if source .next is not None :
967
967
assert source .next == ")"
@@ -972,7 +972,7 @@ def parse(str, flags=0, pattern=None):
972
972
973
973
return p
974
974
975
- def parse_template (source , pattern ):
975
+ def parse_template (source , state ):
976
976
# parse 're' replacement string into list of literals and
977
977
# group references
978
978
s = Tokenizer (source )
@@ -982,14 +982,14 @@ def parse_template(source, pattern):
982
982
literal = []
983
983
lappend = literal .append
984
984
def addgroup (index , pos ):
985
- if index > pattern .groups :
985
+ if index > state .groups :
986
986
raise s .error ("invalid group reference %d" % index , pos )
987
987
if literal :
988
988
literals .append ('' .join (literal ))
989
989
del literal [:]
990
990
groups .append ((len (literals ), index ))
991
991
literals .append (None )
992
- groupindex = pattern .groupindex
992
+ groupindex = state .groupindex
993
993
while True :
994
994
this = sget ()
995
995
if this is None :
0 commit comments