private Statement ParseSmallStmt() {
switch (PeekToken().Kind) {
case TokenKind.KeywordPrint:
return ParsePrintStmt();
case TokenKind.KeywordPass:
return FinishSmallStmt(new EmptyStatement());
case TokenKind.KeywordBreak:
if (!_inLoop) {
ReportSyntaxError("'break' outside loop");
}
return FinishSmallStmt(new BreakStatement());
case TokenKind.KeywordContinue:
if (!_inLoop) {
ReportSyntaxError("'continue' not properly in loop");
} else if (_inFinally) {
ReportSyntaxError("'continue' not supported inside 'finally' clause");
}
return FinishSmallStmt(new ContinueStatement());
case TokenKind.KeywordReturn:
return ParseReturnStmt();
case TokenKind.KeywordFrom:
return ParseFromImportStmt();
case TokenKind.KeywordImport:
return ParseImportStmt();
case TokenKind.KeywordGlobal:
return ParseGlobalStmt();
case TokenKind.KeywordRaise:
return ParseRaiseStmt();
case TokenKind.KeywordAssert:
return ParseAssertStmt();
case TokenKind.KeywordExec:
return ParseExecStmt();
case TokenKind.KeywordDel:
return ParseDelStmt();
case TokenKind.KeywordYield:
return ParseYieldStmt();
default:
return ParseExprStmt();
}
}