void () { while (myBuilder.getTokenType() == PyTokenTypes.STATEMENT_BREAK) { myBuilder.advanceLexer(); } final IElementType firstToken; firstToken = myBuilder.getTokenType(); if (firstToken == null) return; if (firstToken == PyTokenTypes.WHILE_KEYWORD) { parseWhileStatement(); return; } if (firstToken == PyTokenTypes.IF_KEYWORD) { parseIfStatement(PyTokenTypes.IF_KEYWORD, PyTokenTypes.ELIF_KEYWORD, PyTokenTypes.ELSE_KEYWORD, PyElementTypes.IF_STATEMENT); return; } if (firstToken == PyTokenTypes.FOR_KEYWORD) { parseForStatement(myBuilder.mark()); return; } if (firstToken == PyTokenTypes.TRY_KEYWORD) { parseTryStatement(); return; } if (firstToken == PyTokenTypes.DEF_KEYWORD) { getFunctionParser().parseFunctionDeclaration(myBuilder.mark(), false); return; } if (firstToken == PyTokenTypes.AT) { getFunctionParser().parseDecoratedDeclaration(); return; } if (firstToken == PyTokenTypes.CLASS_KEYWORD) { parseClassDeclaration(); return; } if (firstToken == PyTokenTypes.WITH_KEYWORD) { parseWithStatement(myBuilder.mark()); return; } if (firstToken == PyTokenTypes.ASYNC_KEYWORD) { parseAsyncStatement(false); return; } if (atToken(PyTokenTypes.IDENTIFIER, TOK_TYPE)) { if (parseTypeAliasStatement()) { return; } } if (atToken(PyTokenTypes.IDENTIFIER, TOK_ASYNC)) { if (parseAsyncStatement(true)) { return; } } if (atToken(PyTokenTypes.IDENTIFIER, TOK_MATCH)) { if (parseMatchStatement()) { return; } } parseSimpleStatement(); }