public Statement ParseStatement()
{
switch (Next().Type)
{
case TokenType.LeftBrace:
{
Statement node;
return Speculate(ParseExpressionStatement, out node)
? node
: ParseStatementBlock();
}
case TokenType.Load:
return ParseLoadStatement();
case TokenType.Var:
return ParseVariableStatement();
case TokenType.SemiColon:
return ParseEmptyStatement();
case TokenType.If:
return ParseIfStatement();
case TokenType.While:
return ParseWhileStatement();
case TokenType.For:
return ParseForInStatement();
case TokenType.Next:
return ParseNextStatement();
case TokenType.Break:
return ParseBreakStatement();
case TokenType.Return:
return ParseReturnStatement();
case TokenType.Switch:
return ParseSwitchStatement();
case TokenType.Throw:
return ParseThrowStatement();
case TokenType.Try:
return ParseTryStatement();
default:
return ParseExpressionStatement();
}
}