1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:57:35 +00:00

LibCpp: Parse nullptr literal

This commit is contained in:
Itamar 2021-03-28 10:40:20 +03:00 committed by Andreas Kling
parent cbb49f26d9
commit 9954a1837f
3 changed files with 27 additions and 4 deletions

View file

@ -414,8 +414,10 @@ bool Parser::match_literal()
return true;
case Token::Type::DoubleQuotedString:
return true;
case Token::Type::Float:
return true;
case Token::Type::Keyword: {
return match_boolean_literal();
return match_boolean_literal() || peek().text() == "nullptr";
}
default:
return false;
@ -477,6 +479,10 @@ NonnullRefPtr<Expression> Parser::parse_literal(ASTNode& parent)
case Token::Type::Keyword: {
if (match_boolean_literal())
return parse_boolean_literal(parent);
if (peek().text() == "nullptr") {
auto token = consume();
return create_ast_node<NullPointerLiteral>(parent, token.start(), token.end());
}
[[fallthrough]];
}
default: {
@ -771,10 +777,8 @@ void Parser::error(StringView message)
bool Parser::match_expression()
{
auto token_type = peek().type();
return token_type == Token::Type::Integer
|| token_type == Token::Type::Float
return match_literal()
|| token_type == Token::Type::Identifier
|| token_type == Token::Type::DoubleQuotedString
|| match_unary_expression();
}