[3.7] Revert "bpo-30406: Make async and await proper keywords" (GH-6143) by miss-islington · Pull Request #6145 · python/cpython
if toknum in (NAME, NUMBER): if toknum in (NAME, NUMBER, ASYNC, AWAIT): tokval += ' '
if toknum == INDENT:
# 'stashed' and 'async_*' are used for async/await parsing stashed = None async_def = False async_def_indent = 0 async_def_nl = False
while 1: # loop over lines in stream try: line = readline()
if stashed: yield stashed stashed = None
if line[pos] in '#\r\n': # skip comments or blank lines if line[pos] == '#': comment_token = line[pos:].rstrip('\r\n')
if async_def and async_def_indent >= indents[-1]: async_def = False async_def_nl = False async_def_indent = 0
yield (DEDENT, '', (lnum, pos), (lnum, pos), line)
if async_def and async_def_nl and async_def_indent >= indents[-1]: async_def = False async_def_nl = False async_def_indent = 0
else: # continued statement if not line: raise TokenError("EOF in multi-line statement", (lnum, 0))
elif initial == '#': assert not token.endswith("\n") if stashed: yield stashed stashed = None yield (COMMENT, token, spos, epos, line) elif token in triple_quoted: endprog = endprogs[token] endmatch = endprog.match(line, pos) if endmatch: # all on one line pos = endmatch.end(0) token = line[start:pos] if stashed: yield stashed stashed = None yield (STRING, token, spos, (lnum, pos), line) else: strstart = (lnum, start) # multiple lines
tok = (NAME, token, spos, epos, line) if token == 'async' and not stashed: stashed = tok continue
if token == 'def': if (stashed and stashed[0] == NAME and stashed[1] == 'async'):
async_def = True async_def_indent = indents[-1]
yield (ASYNC, stashed[1], stashed[2], stashed[3], stashed[4]) stashed = None
if stashed: yield stashed stashed = None
yield tok elif initial == '\\': # continued stmt # This yield is new; needed for better idempotency: if stashed: yield stashed stashed = None yield (NL, token, spos, (lnum, pos), line) continued = 1 else: if initial in '([{': parenlev = parenlev + 1 elif initial in ')]}': parenlev = parenlev - 1 if stashed: yield stashed stashed = None yield (OP, token, spos, epos, line) else: yield (ERRORTOKEN, line[pos], (lnum, pos), (lnum, pos+1), line) pos = pos + 1
if stashed: yield stashed stashed = None
for indent in indents[1:]: # pop remaining indent levels yield (DEDENT, '', (lnum, 0), (lnum, 0), '') yield (ENDMARKER, '', (lnum, 0), (lnum, 0), '')