1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-26 01:35:08 +00:00

LibJS: Implement basic MemberExpression parsing

At last we can parse "hello friends".length :^)
This commit is contained in:
Andreas Kling 2020-03-12 13:05:57 +01:00
parent ed100bc6f4
commit f405cb6a77
2 changed files with 6 additions and 4 deletions

View file

@ -1,3 +1 @@
function foo() { "hello friends".length
"hello friends".length
}

View file

@ -132,6 +132,9 @@ NonnullOwnPtr<Expression> Parser::parse_secondary_expression(NonnullOwnPtr<Expre
case TokenType::Equals: case TokenType::Equals:
consume(); consume();
return make<AssignmentExpression>(AssignmentOp::Assign, move(lhs), parse_expression()); return make<AssignmentExpression>(AssignmentOp::Assign, move(lhs), parse_expression());
case TokenType::Period:
consume();
return make<MemberExpression>(move(lhs), parse_expression());
default: default:
m_has_errors = true; m_has_errors = true;
expected("secondary expression (missing switch case)"); expected("secondary expression (missing switch case)");
@ -239,7 +242,8 @@ bool Parser::match_secondary_expression() const
|| type == TokenType::Asterisk || type == TokenType::Asterisk
|| type == TokenType::Slash || type == TokenType::Slash
|| type == TokenType::Equals || type == TokenType::Equals
|| type == TokenType::ParenOpen; || type == TokenType::ParenOpen
|| type == TokenType::Period;
} }
bool Parser::match_statement() const bool Parser::match_statement() const