def phys_tokens(toks):
last_line = None<EOL>last_lineno = -<NUM_LIT:1><EOL>last_ttype = None<EOL>for ttype, ttext, (slineno, scol), (elineno, ecol), ltext in toks:<EOL><INDENT>if last_lineno != elineno:<EOL><INDENT>if last_line and last_line.endswith("<STR_LIT>"):<EOL><INDENT>inject_backslash = True<EOL>if last_ttype == tokenize.COMMENT:<EOL><INDENT>inject_backslash = False<EOL><DEDENT>elif ttype == token.STRING:<EOL><INDENT>if "<STR_LIT:\n>" in ttext and ttext.split('<STR_LIT:\n>', <NUM_LIT:1>)[<NUM_LIT:0>][-<NUM_LIT:1>] == '<STR_LIT:\\>':<EOL><INDENT>inject_backslash = False<EOL><DEDENT><DEDENT>if inject_backslash:<EOL><INDENT>ccol = len(last_line.split("<STR_LIT:\n>")[-<NUM_LIT:2>]) - <NUM_LIT:1><EOL>yield (<EOL><NUM_LIT>, "<STR_LIT>",<EOL>(slineno, ccol), (slineno, ccol+<NUM_LIT:2>),<EOL>last_line<EOL>)<EOL><DEDENT><DEDENT>last_line = ltext<EOL>last_ttype = ttype<EOL><DEDENT>yield ttype, ttext, (slineno, scol), (elineno, ecol), ltext<EOL>last_lineno = elineno<EOL><DEDENT>
Return all physical tokens, even line continuations.

    tokenize.generate_tokens() doesn't return a token for the backslash that
    continues lines.  This wrapper provides those tokens so that we can
    re-create a faithful representation of the original source.

    Returns the same values as generate_tokens()