mirror of https://github.com/python/cpython
Issue #15054: Fix incorrect tokenization of 'b' and 'br' string literals.
Patch by Serhiy Storchaka.
This commit is contained in:
parent
7cf6699699
commit
43f42fc3cb
|
@ -278,6 +278,31 @@ String literals
|
|||
OP '+' (1, 32) (1, 33)
|
||||
STRING 'UR"ABC"' (1, 34) (1, 41)
|
||||
|
||||
>>> dump_tokens("b'abc' + B'abc'")
|
||||
STRING "b'abc'" (1, 0) (1, 6)
|
||||
OP '+' (1, 7) (1, 8)
|
||||
STRING "B'abc'" (1, 9) (1, 15)
|
||||
>>> dump_tokens('b"abc" + B"abc"')
|
||||
STRING 'b"abc"' (1, 0) (1, 6)
|
||||
OP '+' (1, 7) (1, 8)
|
||||
STRING 'B"abc"' (1, 9) (1, 15)
|
||||
>>> dump_tokens("br'abc' + bR'abc' + Br'abc' + BR'abc'")
|
||||
STRING "br'abc'" (1, 0) (1, 7)
|
||||
OP '+' (1, 8) (1, 9)
|
||||
STRING "bR'abc'" (1, 10) (1, 17)
|
||||
OP '+' (1, 18) (1, 19)
|
||||
STRING "Br'abc'" (1, 20) (1, 27)
|
||||
OP '+' (1, 28) (1, 29)
|
||||
STRING "BR'abc'" (1, 30) (1, 37)
|
||||
>>> dump_tokens('br"abc" + bR"abc" + Br"abc" + BR"abc"')
|
||||
STRING 'br"abc"' (1, 0) (1, 7)
|
||||
OP '+' (1, 8) (1, 9)
|
||||
STRING 'bR"abc"' (1, 10) (1, 17)
|
||||
OP '+' (1, 18) (1, 19)
|
||||
STRING 'Br"abc"' (1, 20) (1, 27)
|
||||
OP '+' (1, 28) (1, 29)
|
||||
STRING 'BR"abc"' (1, 30) (1, 37)
|
||||
|
||||
Operators
|
||||
|
||||
>>> dump_tokens("def d22(a, b, c=2, d=2, *k): pass")
|
||||
|
|
|
@ -70,10 +70,10 @@ Double = r'[^"\\]*(?:\\.[^"\\]*)*"'
|
|||
Single3 = r"[^'\\]*(?:(?:\\.|'(?!''))[^'\\]*)*'''"
|
||||
# Tail end of """ string.
|
||||
Double3 = r'[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*"""'
|
||||
Triple = group("[uU]?[rR]?'''", '[uU]?[rR]?"""')
|
||||
Triple = group("[uUbB]?[rR]?'''", '[uUbB]?[rR]?"""')
|
||||
# Single-line ' or " string.
|
||||
String = group(r"[uU]?[rR]?'[^\n'\\]*(?:\\.[^\n'\\]*)*'",
|
||||
r'[uU]?[rR]?"[^\n"\\]*(?:\\.[^\n"\\]*)*"')
|
||||
String = group(r"[uUbB]?[rR]?'[^\n'\\]*(?:\\.[^\n'\\]*)*'",
|
||||
r'[uUbB]?[rR]?"[^\n"\\]*(?:\\.[^\n"\\]*)*"')
|
||||
|
||||
# Because of leftmost-then-longest match semantics, be sure to put the
|
||||
# longest operators first (e.g., if = came before ==, == would get
|
||||
|
@ -91,9 +91,9 @@ PlainToken = group(Number, Funny, String, Name)
|
|||
Token = Ignore + PlainToken
|
||||
|
||||
# First (or only) line of ' or " string.
|
||||
ContStr = group(r"[uU]?[rR]?'[^\n'\\]*(?:\\.[^\n'\\]*)*" +
|
||||
ContStr = group(r"[uUbB]?[rR]?'[^\n'\\]*(?:\\.[^\n'\\]*)*" +
|
||||
group("'", r'\\\r?\n'),
|
||||
r'[uU]?[rR]?"[^\n"\\]*(?:\\.[^\n"\\]*)*' +
|
||||
r'[uUbB]?[rR]?"[^\n"\\]*(?:\\.[^\n"\\]*)*' +
|
||||
group('"', r'\\\r?\n'))
|
||||
PseudoExtras = group(r'\\\r?\n', Comment, Triple)
|
||||
PseudoToken = Whitespace + group(PseudoExtras, Number, Funny, ContStr, Name)
|
||||
|
|
|
@ -67,6 +67,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #15054: A bug in tokenize.tokenize that caused string literals
|
||||
with 'b' and 'br' prefixes to be incorrectly tokenized has been fixed.
|
||||
Patch by Serhiy Storchaka.
|
||||
|
||||
- Issue #15036: Allow removing or changing multiple items in
|
||||
single-file mailboxes (mbox, MMDF, Babyl) flushing the mailbox
|
||||
between the changes.
|
||||
|
|
Loading…
Reference in New Issue