LibJS: Parse computed MemberExpressions

MemberExpression comes in two flavors:

    computed: a[b]
non-computed: a.b

We can now parse both of the types. :^)
This commit is contained in:
Andreas Kling 2020-03-20 20:51:03 +01:00
parent 86642add2f
commit a3d2e07446
Notes: sideshowbarker 2024-07-19 08:12:42 +09:00
3 changed files with 26 additions and 12 deletions

View file

@ -369,6 +369,12 @@ NonnullRefPtr<Expression> Parser::parse_secondary_expression(NonnullRefPtr<Expre
case TokenType::Period:
consume();
return create_ast_node<MemberExpression>(move(lhs), parse_expression(min_precedence, associativity));
case TokenType::BracketOpen: {
consume(TokenType::BracketOpen);
auto expression = create_ast_node<MemberExpression>(move(lhs), parse_expression(min_precedence, associativity), true);
consume(TokenType::BracketClose);
return expression;
}
case TokenType::PlusPlus:
consume();
return create_ast_node<UpdateExpression>(UpdateOp::Increment, move(lhs));
@ -587,6 +593,7 @@ bool Parser::match_secondary_expression() const
|| type == TokenType::LessThanEquals
|| type == TokenType::ParenOpen
|| type == TokenType::Period
|| type == TokenType::BracketOpen
|| type == TokenType::PlusPlus
|| type == TokenType::MinusMinus;
}