3,0-3,4: COMMENT '#Raw' 5,0-5,12: STRING 'r\'012345678\'' 5,12-5,13: NEWLINE '\n' 6,0-6,12: STRING 'r\'(\\033|~{)\'' 6,12-6,13: NEWLINE '\n' 7,0-7,13: STRING 'r\'\\A[+-]?\\d+\'' 7,13-7,14: NEWLINE '\n' 8,0-8,19: STRING 'r\'(?P[\\w]+)|\'' 8,19-8,20: NEWLINE '\n' 9,0-9,19: STRING 'r\'\\|\\[\\][123]|\\{\\}\'' 9,19-9,20: NEWLINE '\n' 10,0-10,6: STRING 'r\'^.$\'' 10,6-10,7: NEWLINE '\n' 11,0-11,9: STRING 'r\'[^A-Z]\'' 11,9-11,10: NEWLINE '\n' 13,0-13,14: COMMENT '# With escapes' 15,0-15,4: STRING '\'\\n\'' 15,4-15,5: NEWLINE '\n' 16,0-16,4: STRING '"\\\'"' 16,4-16,5: NEWLINE '\n' 17,0-17,4: STRING '\'\\\'\'' 17,4-17,5: NEWLINE '\n' 18,0-18,4: STRING '"\\""' 18,4-18,5: NEWLINE '\n' 19,0-19,8: STRING '"\\t\\l\\b"' 19,8-19,9: NEWLINE '\n' 22,0-22,10: COMMENT '#F-strings' 24,0-24,3: STRING 'f\'\'' 24,3-24,4: NEWLINE '\n' 25,0-25,9: STRING 'rf\'hello\'' 25,9-25,10: NEWLINE '\n' 26,0-26,9: STRING 'fr\'hello\'' 26,9-26,10: NEWLINE '\n' 27,0-27,4: FSTRING_START 'f\'a{' 27,4-27,5: NUMBER '1' 27,5-27,6: OP '+' 27,6-27,7: NUMBER '1' 27,7-27,10: FSTRING_END '}b\'' 27,10-27,11: NEWLINE '\n' 28,0-28,3: FSTRING_START 'f\'{' 28,3-28,4: NAME 'x' 28,4-28,6: FSTRING_MID '}{' 28,6-28,7: NAME 'y' 28,7-28,10: FSTRING_MID '}a{' 28,10-28,11: NAME 'z' 28,11-28,13: FSTRING_END '}\'' 28,13-28,14: NEWLINE '\n' 29,0-29,57: COMMENT '#This is not legal in CPython, but we tokenize it anyway.' 30,0-30,4: FSTRING_START 'f\'a{' 30,4-30,7: STRING '\'x\'' 30,7-30,8: OP '+' 30,8-30,11: STRING '"y"' 30,11-30,14: FSTRING_END '}b\'' 30,14-30,15: NEWLINE '\n' 32,0-32,19: COMMENT '#Multiline f-string' 33,0-35,1: FSTRING_START 'f\'\'\'\n In f-string expressions act as if parenthesised\n{' 36,4-36,5: NAME 'x' 36,6-36,7: OP '+' 37,4-37,5: NAME 'y' 37,6-37,7: OP '&' 38,6-38,7: NAME 'z' 39,0-41,3: FSTRING_END '}\nend\n\'\'\'' 41,3-41,4: NEWLINE '\n' 43,0-43,11: COMMENT '#Multi-line' 46,0-50,3: STRING 'r""" Single quotation character with multi-line\n\n"a", \'b\', "", \'\'\n....\n"""' 50,3-50,4: NEWLINE '\n' 52,0-56,3: STRING 'r\'\'\' Single quotation character with multi-line\n\n"a", \'b\', "", \'\'\n....\n\'\'\'' 56,3-56,4: NEWLINE '\n' 58,0-58,21: COMMENT '#f-string conversions' 59,0-59,2: CONVERSION '!a' 59,2-59,3: NEWLINE '\n' 60,0-60,2: CONVERSION '!s' 60,2-60,3: NEWLINE '\n' 61,0-61,2: CONVERSION '!r' 61,2-61,3: NEWLINE '\n' 63,0-63,3: FSTRING_START 'f"{' 63,3-63,4: NAME 'k' 63,4-63,7: FSTRING_MID '}={' 63,7-63,8: NAME 'v' 63,8-63,10: CONVERSION '!r' 63,10-63,12: FSTRING_END '}"' 63,12-63,13: NEWLINE '\n' 65,0-65,23: COMMENT '#Implicit concatenation' 66,0-66,1: LPAR '(' 66,1-66,4: FSTRING_START 'f\'{' 66,4-66,8: NAME 'expr' 66,8-66,16: FSTRING_END '} text \'' 67,4-67,18: STRING '\'continuation\'' 68,4-68,10: FSTRING_START 'f\'and{' 68,10-68,11: NAME 'v' 68,11-68,13: FSTRING_END '}\'' 69,0-69,1: RPAR ')' 69,1-69,2: NEWLINE '\n' 71,0-71,9: COMMENT '#prefixes' 73,0-73,20: STRING 'u\'{}\\r{}{:<{width}}\'' 73,20-73,21: NEWLINE '\n' 74,0-74,15: STRING 'u\'{}\\r{}{:<{}}\'' 74,15-74,16: NEWLINE '\n' 76,0-76,32: COMMENT '#f-strings with format specifier' 77,0-77,11: FSTRING_START 'f\'result: {' 77,11-77,16: NAME 'value' 77,16-77,17: COLON ':' 77,17-77,21: FSTRING_SPEC '0.2f' 77,21-77,23: FSTRING_END '}\'' 77,23-77,24: NEWLINE '\n' 78,0-78,11: FSTRING_START 'f\'result: {' 78,11-78,16: NAME 'value' 78,16-78,17: COLON ':' 78,17-78,18: FSTRING_SPEC '{' 78,18-78,23: NAME 'width' 78,23-78,26: FSTRING_SPEC '}.{' 78,26-78,35: NAME 'precision' 78,35-78,36: FSTRING_SPEC '}' 78,36-78,38: FSTRING_END '}\'' 78,38-78,39: NEWLINE '\n' 81,0-81,7: FSTRING_START 'f"Too {' 81,7-81,13: STRING '\'many\'' 81,14-81,16: NAME 'if' 81,17-81,21: NAME 'alen' 81,22-81,23: OP '>' 81,24-81,28: NAME 'elen' 81,29-81,33: NAME 'else' 81,34-81,39: STRING '\'few\'' 81,39-81,57: FSTRING_MID '} parameters for {' 81,57-81,60: NAME 'cls' 81,60-81,63: FSTRING_END '};"' 81,63-81,64: NEWLINE '\n' 83,0-83,58: COMMENT '# f-strings have special escaping rules for curly-brackets' 84,0-84,21: FSTRING_START 'f\'This should work \\{' 84,21-84,24: NAME 'foo' 84,24-84,26: FSTRING_END '}\'' 84,26-84,27: NEWLINE '\n' 85,0-85,22: FSTRING_START 'rf\'This should work \\{' 85,22-85,25: NAME 'foo' 85,25-85,27: FSTRING_END '}\'' 85,27-85,28: NEWLINE '\n' 87,0-87,5: STRING 'f\'\\}\'' 87,6-87,53: COMMENT '# syntax error (we currently don\'t report this)' 87,53-87,54: NEWLINE '\n' 88,0-88,6: STRING 'f\'\\}}\'' 88,7-88,11: COMMENT '# ok' 88,11-88,12: NEWLINE '\n' 91,0-91,55: COMMENT '# f-strings with unicode literals of the form `\\N{...}`' 92,0-92,3: FSTRING_START 'f\'{' 92,3-92,10: NAME 'degrees' 92,10-92,11: COLON ':' 92,11-92,15: FSTRING_SPEC '0.0f' 92,15-92,32: FSTRING_END '}\\N{DEGREE SIGN}\'' 92,32-92,33: NEWLINE '\n' 93,0-93,3: FSTRING_START 'f"{' 93,3-93,10: NAME 'degrees' 93,10-93,11: COLON ':' 93,11-93,15: FSTRING_SPEC '0.0f' 93,15-93,32: FSTRING_END '}\\N{DEGREE SIGN}"' 93,32-93,33: NEWLINE '\n' 94,0-94,5: FSTRING_START 'f\'\'\'{' 94,5-94,12: NAME 'degrees' 94,12-94,13: COLON ':' 94,13-94,17: FSTRING_SPEC '0.0f' 94,17-94,36: FSTRING_END '}\\N{DEGREE SIGN}\'\'\'' 94,36-94,37: NEWLINE '\n' 95,0-95,5: FSTRING_START 'f"""{' 95,5-95,12: NAME 'degrees' 95,12-95,13: COLON ':' 95,13-95,17: FSTRING_SPEC '0.0f' 95,17-95,36: FSTRING_END '}\\N{DEGREE SIGN}"""' 95,36-95,37: NEWLINE '\n' 97,0-97,59: COMMENT '# double curlies in f-strings with various kinds of quoting' 98,0-98,6: FSTRING_START 'f\'{{ {' 98,6-98,9: NAME 'foo' 98,9-98,14: FSTRING_END '} }}\'' 98,14-98,15: NEWLINE '\n' 99,0-99,6: FSTRING_START 'f"{{ {' 99,6-99,9: NAME 'foo' 99,9-99,14: FSTRING_END '} }}"' 99,14-99,15: NEWLINE '\n' 100,0-100,8: FSTRING_START 'f\'\'\'{{ {' 100,8-100,11: NAME 'foo' 100,11-100,18: FSTRING_END '} }}\'\'\'' 100,18-100,19: NEWLINE '\n' 101,0-101,8: FSTRING_START 'f"""{{ {' 101,8-101,11: NAME 'foo' 101,11-101,18: FSTRING_END '} }}"""' 101,18-101,19: NEWLINE '\n' 103,0-103,17: COMMENT '# Empty f-strings' 104,0-104,3: STRING 'f\'\'' 104,3-104,4: NEWLINE '\n' 105,0-105,3: STRING 'f""' 105,3-105,4: NEWLINE '\n' 106,0-106,7: STRING 'f\'\'\'\'\'\'' 106,7-106,8: NEWLINE '\n' 107,0-107,7: STRING 'f""""""' 107,7-107,8: NEWLINE '\n' 110,0-110,7: STRING 'r\'\\NUL\'' 110,8-110,50: COMMENT '# _Not_ a named unicode escape (`\\N{...}`)' 110,50-110,51: NEWLINE '\n' 112,0-112,8: FSTRING_START 'f\'res: {' 112,8-112,11: NAME 'val' 112,11-112,12: COLON ':' 112,12-112,13: FSTRING_SPEC '{' 112,13-112,18: NAME 'width' 112,18-112,19: COLON ':' 112,19-112,20: NUMBER '0' 112,20-112,23: FSTRING_SPEC '}.{' 112,23-112,27: NAME 'prec' 112,27-112,28: COLON ':' 112,28-112,29: NUMBER '1' 112,29-112,30: FSTRING_SPEC '}' 112,30-112,32: FSTRING_END '}\'' 112,32-112,33: NEWLINE '\n' 113,0-113,0: ENDMARKER ''