mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 03:18:11 +00:00
LibJS: Implement basic lexing + parsing of StringLiteral
This still includes the double-quote characters (") but at least the AST comes out right.
This commit is contained in:
parent
879bf3e97b
commit
ed100bc6f4
2 changed files with 9 additions and 0 deletions
|
@ -195,6 +195,13 @@ Token Lexer::next()
|
||||||
consume();
|
consume();
|
||||||
}
|
}
|
||||||
token_type = TokenType::NumericLiteral;
|
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) {
|
} else if (m_current_char == EOF) {
|
||||||
token_type = TokenType::Eof;
|
token_type = TokenType::Eof;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -89,6 +89,8 @@ NonnullOwnPtr<Expression> Parser::parse_primary_expression()
|
||||||
return make<NumericLiteral>(consume().double_value());
|
return make<NumericLiteral>(consume().double_value());
|
||||||
case TokenType::BoolLiteral:
|
case TokenType::BoolLiteral:
|
||||||
return make<BooleanLiteral>(consume().bool_value());
|
return make<BooleanLiteral>(consume().bool_value());
|
||||||
|
case TokenType::StringLiteral:
|
||||||
|
return make<StringLiteral>(consume().string_value());
|
||||||
case TokenType::CurlyOpen:
|
case TokenType::CurlyOpen:
|
||||||
return parse_object_expression();
|
return parse_object_expression();
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue