mirror of
https://github.com/RGBCube/serenity
synced 2025-05-22 19:45:08 +00:00
LibJS: Add support for do..while statements
This commit is contained in:
parent
da0715aba9
commit
f8393b80e3
5 changed files with 74 additions and 0 deletions
|
@ -210,6 +210,8 @@ NonnullRefPtr<Statement> Parser::parse_statement()
|
|||
return parse_break_statement();
|
||||
case TokenType::Switch:
|
||||
return parse_switch_statement();
|
||||
case TokenType::Do:
|
||||
return parse_do_while_statement();
|
||||
default:
|
||||
if (match_expression())
|
||||
return adopt(*new ExpressionStatement(parse_expression(0)));
|
||||
|
@ -702,6 +704,15 @@ NonnullRefPtr<TryStatement> Parser::parse_try_statement()
|
|||
return create_ast_node<TryStatement>(move(block), move(handler), move(finalizer));
|
||||
}
|
||||
|
||||
NonnullRefPtr<DoWhileStatement> Parser::parse_do_while_statement()
|
||||
{
|
||||
consume(TokenType::Do);
|
||||
auto body = parse_statement();
|
||||
consume(TokenType::While);
|
||||
auto test = parse_expression(0);
|
||||
return create_ast_node<DoWhileStatement>(move(test), move(body));
|
||||
}
|
||||
|
||||
NonnullRefPtr<SwitchStatement> Parser::parse_switch_statement()
|
||||
{
|
||||
consume(TokenType::Switch);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue