added parsing and testing for grouped expressions

This commit is contained in:
Karma Riuk
2025-07-12 15:22:45 +02:00
parent ab17545c93
commit 86574552aa
3 changed files with 24 additions and 0 deletions

View File

@@ -46,6 +46,11 @@ namespace parser {
std::bind(&parser::parse_boolean, this)
);
register_prefix(
token::type::LPAREN,
std::bind(&parser::parse_grouped_expr, this)
);
using namespace std::placeholders;
register_infix(
{token::type::PLUS,
@@ -238,6 +243,19 @@ namespace parser {
return ret;
};
ast::expression* parser::parse_grouped_expr() {
// TRACE_FUNCTION;
next_token();
ast::expression* ret = parse_expression(precedence::LOWEST);
if (!expect_next(token::type::RPAREN)) {
delete ret;
return nullptr;
}
return ret;
};
ast::expression* parser::parse_infix_expr(ast::expression* left) {
// TRACE_FUNCTION;
ast::infix_expr* ret =

View File

@@ -53,6 +53,7 @@ namespace parser {
ast::expression* parse_integer();
ast::expression* parse_boolean();
ast::expression* parse_prefix_expr();
ast::expression* parse_grouped_expr();
ast::expression* parse_infix_expr(ast::expression*);
};