Make rb'' strings work in lib2to3 (#1724) · python/cpython@0c4aca5 (original) (raw)
`@@ -74,10 +74,11 @@ def maybe(*choices): return group(*choices) + '?'
`
74
74
`Single3 = r"[^'\](?:(?:\.|'(?!''))[^'\])*'''"
`
75
75
`# Tail end of """ string.
`
76
76
`Double3 = r'[^"\](?:(?:\.|"(?!""))[^"\])*"""'
`
77
``
`-
Triple = group("[ubUB]?[rR]?'''", '[ubUB]?[rR]?"""')
`
``
77
`+
_litprefix = r"(?:[uUrRbB]|[rR][bB]|[bBuU][rR])?"
`
``
78
`+
Triple = group(_litprefix + "'''", _litprefix + '"""')
`
78
79
`# Single-line ' or " string.
`
79
``
`-
String = group(r"[uU]?[rR]?'[^\n'\](?:\.[^\n'\])*'",
`
80
``
`-
r'[uU]?[rR]?"[^\n"\](?:\.[^\n"\])*"')
`
``
80
`+
String = group(_litprefix + r"'[^\n'\](?:\.[^\n'\])*'",
`
``
81
`+
_litprefix + r'"[^\n"\](?:\.[^\n"\])*"')
`
81
82
``
82
83
`# Because of leftmost-then-longest match semantics, be sure to put the
`
83
84
`# longest operators first (e.g., if = came before ==, == would get
`
`@@ -95,9 +96,9 @@ def maybe(*choices): return group(*choices) + '?'
`
95
96
`Token = Ignore + PlainToken
`
96
97
``
97
98
`# First (or only) line of ' or " string.
`
98
``
`-
ContStr = group(r"[uUbB]?[rR]?'[^\n'\](?:\.[^\n'\])*" +
`
``
99
`+
ContStr = group(_litprefix + r"'[^\n'\](?:\.[^\n'\])*" +
`
99
100
`group("'", r'\\r?\n'),
`
100
``
`-
r'[uUbB]?[rR]?"[^\n"\](?:\.[^\n"\])*' +
`
``
101
`+
_litprefix + r'"[^\n"\](?:\.[^\n"\])*' +
`
101
102
`group('"', r'\\r?\n'))
`
102
103
`PseudoExtras = group(r'\\r?\n', Comment, Triple)
`
103
104
`PseudoToken = Whitespace + group(PseudoExtras, Number, Funny, ContStr, Name)
`
`@@ -111,6 +112,7 @@ def maybe(*choices): return group(*choices) + '?'
`
111
112
`"b'''": single3prog, 'b"""': double3prog,
`
112
113
`"ur'''": single3prog, 'ur"""': double3prog,
`
113
114
`"br'''": single3prog, 'br"""': double3prog,
`
``
115
`+
"rb'''": single3prog, 'rb"""': double3prog,
`
114
116
`"R'''": single3prog, 'R"""': double3prog,
`
115
117
`"U'''": single3prog, 'U"""': double3prog,
`
116
118
`"B'''": single3prog, 'B"""': double3prog,
`
`@@ -120,6 +122,9 @@ def maybe(*choices): return group(*choices) + '?'
`
120
122
`"bR'''": single3prog, 'bR"""': double3prog,
`
121
123
`"Br'''": single3prog, 'Br"""': double3prog,
`
122
124
`"BR'''": single3prog, 'BR"""': double3prog,
`
``
125
`+
"rB'''": single3prog, 'rB"""': double3prog,
`
``
126
`+
"Rb'''": single3prog, 'Rb"""': double3prog,
`
``
127
`+
"RB'''": single3prog, 'RB"""': double3prog,
`
123
128
`'r': None, 'R': None,
`
124
129
`'u': None, 'U': None,
`
125
130
`'b': None, 'B': None}
`
`@@ -132,7 +137,9 @@ def maybe(*choices): return group(*choices) + '?'
`
132
137
`"ur'''", 'ur"""', "Ur'''", 'Ur"""',
`
133
138
`"uR'''", 'uR"""', "UR'''", 'UR"""',
`
134
139
`"br'''", 'br"""', "Br'''", 'Br"""',
`
135
``
`-
"bR'''", 'bR"""', "BR'''", 'BR"""',):
`
``
140
`+
"bR'''", 'bR"""', "BR'''", 'BR"""',
`
``
141
`+
"rb'''", 'rb"""', "Rb'''", 'Rb"""',
`
``
142
`+
"rB'''", 'rB"""', "RB'''", 'RB"""',):
`
136
143
`triple_quoted[t] = t
`
137
144
`single_quoted = {}
`
138
145
`for t in ("'", '"',
`
`@@ -142,7 +149,9 @@ def maybe(*choices): return group(*choices) + '?'
`
142
149
`"ur'", 'ur"', "Ur'", 'Ur"',
`
143
150
`"uR'", 'uR"', "UR'", 'UR"',
`
144
151
`"br'", 'br"', "Br'", 'Br"',
`
145
``
`-
"bR'", 'bR"', "BR'", 'BR"', ):
`
``
152
`+
"bR'", 'bR"', "BR'", 'BR"',
`
``
153
`+
"rb'", 'rb"', "Rb'", 'Rb"',
`
``
154
`+
"rB'", 'rB"', "RB'", 'RB"',):
`
146
155
`single_quoted[t] = t
`
147
156
``
148
157
`tabsize = 8
`