From ed100bc6f4818568d510c5b91d21259ac03e5015 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 12 Mar 2020 13:05:06 +0100 Subject: [PATCH] LibJS: Implement basic lexing + parsing of StringLiteral This still includes the double-quote characters (") but at least the AST comes out right. --- Libraries/LibJS/Lexer.cpp | 7 +++++++ Libraries/LibJS/Parser.cpp | 2 ++ 2 files changed, 9 insertions(+) diff --git a/Libraries/LibJS/Lexer.cpp b/Libraries/LibJS/Lexer.cpp index 979764e3b5..37fabfbf47 100644 --- a/Libraries/LibJS/Lexer.cpp +++ b/Libraries/LibJS/Lexer.cpp @@ -195,6 +195,13 @@ Token Lexer::next() consume(); } token_type = TokenType::NumericLiteral; + } else if (m_current_char == '"') { + consume(); + while (m_current_char != '"') { + consume(); + } + consume(); + token_type = TokenType::StringLiteral; } else if (m_current_char == EOF) { token_type = TokenType::Eof; } else { diff --git a/Libraries/LibJS/Parser.cpp b/Libraries/LibJS/Parser.cpp index 1cfc3be231..b9467cebd3 100644 --- a/Libraries/LibJS/Parser.cpp +++ b/Libraries/LibJS/Parser.cpp @@ -89,6 +89,8 @@ NonnullOwnPtr Parser::parse_primary_expression() return make(consume().double_value()); case TokenType::BoolLiteral: return make(consume().bool_value()); + case TokenType::StringLiteral: + return make(consume().string_value()); case TokenType::CurlyOpen: return parse_object_expression(); default: