From f405cb6a77da5dc19a305e6c92a862f0eb7e032e Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 12 Mar 2020 13:05:57 +0100 Subject: [PATCH] LibJS: Implement basic MemberExpression parsing At last we can parse "hello friends".length :^) --- Base/home/anon/js/string-length.js | 4 +--- Libraries/LibJS/Parser.cpp | 6 +++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Base/home/anon/js/string-length.js b/Base/home/anon/js/string-length.js index db20e7c955..38b1ed191b 100644 --- a/Base/home/anon/js/string-length.js +++ b/Base/home/anon/js/string-length.js @@ -1,3 +1 @@ -function foo() { - "hello friends".length -} +"hello friends".length diff --git a/Libraries/LibJS/Parser.cpp b/Libraries/LibJS/Parser.cpp index b9467cebd3..24c4f58549 100644 --- a/Libraries/LibJS/Parser.cpp +++ b/Libraries/LibJS/Parser.cpp @@ -132,6 +132,9 @@ NonnullOwnPtr Parser::parse_secondary_expression(NonnullOwnPtr(AssignmentOp::Assign, move(lhs), parse_expression()); + case TokenType::Period: + consume(); + return make(move(lhs), parse_expression()); default: m_has_errors = true; expected("secondary expression (missing switch case)"); @@ -239,7 +242,8 @@ bool Parser::match_secondary_expression() const || type == TokenType::Asterisk || type == TokenType::Slash || type == TokenType::Equals - || type == TokenType::ParenOpen; + || type == TokenType::ParenOpen + || type == TokenType::Period; } bool Parser::match_statement() const